Spring boot Docker-java netty_tcnative的问题
我正在尝试对4个服务进行dockerize,其中一个服务有问题。特别是,该服务是通过spring引导服务实现的,并使用google vision API。在构建图像和启动容器时,一切正常,直到使用GoogleVisionAPI代码为止。然后,在运行容器时出现以下运行时错误:Spring boot Docker-java netty_tcnative的问题,spring-boot,docker,docker-compose,netty,grpc-java,Spring Boot,Docker,Docker Compose,Netty,Grpc Java,我正在尝试对4个服务进行dockerize,其中一个服务有问题。特别是,该服务是通过spring引导服务实现的,并使用google vision API。在构建图像和启动容器时,一切正常,直到使用GoogleVisionAPI代码为止。然后,在运行容器时出现以下运行时错误: netty-tcnative unavailable (this may be normal) java.lang.IllegalArgumentException: Failed to load any of the gi
netty-tcnative unavailable (this may be normal)
java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty_tcnative_linux_x86_64, netty_tcnative_linux_x86_64_fedora, netty_tcnative_x86_64, netty_tcnative]
at io.grpc.netty.shaded.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:104) ~[grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl.loadTcNative(OpenSsl.java:526) ~[grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.netty.handler.ssl.OpenSsl.<clinit>(OpenSsl.java:93) ~[grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:244) [grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:171) [grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:120) [grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.netty.shaded.io.grpc.netty.NettyChannelBuilder.buildTransportFactory(NettyChannelBuilder.java:385) [grpc-netty-shaded-1.18.0.jar!/:1.18.0]
at io.grpc.internal.AbstractManagedChannelImplBuilder.build(AbstractManagedChannelImplBuilder.java:435) [grpc-core-1.18.0.jar!/:1.18.0]
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createSingleChannel(InstantiatingGrpcChannelProvider.java:223) [gax-grpc-1.42.0.jar!/:1.42.0]
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.createChannel(InstantiatingGrpcChannelProvider.java:164) [gax-grpc-1.42.0.jar!/:1.42.0]
at com.google.api.gax.grpc.InstantiatingGrpcChannelProvider.getTransportChannel(InstantiatingGrpcChannelProvider.java:156) [gax-grpc-1.42.0.jar!/:1.42.0]
at com.google.api.gax.rpc.ClientContext.create(ClientContext.java:157) [gax-1.42.0.jar!/:1.42.0]
at com.google.cloud.vision.v1.stub.GrpcImageAnnotatorStub.create(GrpcImageAnnotatorStub.java:84) [google-cloud-vision-1.66.0.jar!/:1.66.0]
at com.google.cloud.vision.v1.stub.ImageAnnotatorStubSettings.createStub(ImageAnnotatorStubSettings.java:120) [google-cloud-vision-1.66.0.jar!/:1.66.0]
at com.google.cloud.vision.v1.ImageAnnotatorClient.<init>(ImageAnnotatorClient.java:136) [google-cloud-vision-1.66.0.jar!/:na]
at com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:117) [google-cloud-vision-1.66.0.jar!/:na]
at com.google.cloud.vision.v1.ImageAnnotatorClient.create(ImageAnnotatorClient.java:108) [google-cloud-vision-1.66.0.jar!/:na]
docker compose.yml
version: '3'
services:
front:
container_name: demoLab_front
build: ./front
image: demolab/front:latest
expose:
- "3000"
ports:
- "8087:3000"
restart: always
back:
container_name: demoLab_backGCV
build: ./backGCV
image: demolab/backgcv:latest
depends_on:
- lab
ports:
- "8088:8088"
restart: always
lab:
container_name: demoLab_labGCV
build: ./lab
image: demolab/labgcv:latest
expose:
- "8089"
ports:
- "8089:8089"
restart: always
sift:
container_name: demoLab_labSIFT
build: ./detect-label-service
image: demolab/labsift:latest
expose:
- "5000"
ports:
- "5000:5000"
restart: always
编辑
通过谷歌搜索,我发现:GRPCJava示例无法在AlpineLinux上运行,因为所需的libnetty tcnative boringssl static依赖于glibc。Alpine正在使用musl libc,应用程序启动将失败,消息与我的类似。
我发现尝试构建正确的图像,但对于许多人来说,这似乎是失败的(构建不适用于我的案例)通过替换Dockerfile的这一行解决了问题:
FROM openjdk:8-jdk-alpine
这一行:
FROM koosiedemoer/netty-tcnative-alpine
我可以在日志中看到缺少依赖文件“libcrypt.so.1”。抑制:java.lang.unsatifiedlinkerror:/tmp/libio_grpc_netty_shaded_netty_tcnative_linux_x86_641095585491871975468.so:加载共享库libcrypt时出错。so.1:没有这样的文件或目录(需要/tmp/libio_grpc_netty_shaded_netty_shaded_netty_tcnative_linux_x86_641095585491871975468.so)你是对的,我只是编辑了这个问题,回答了为什么它不见了
FROM koosiedemoer/netty-tcnative-alpine