我正在尝试部署一个Java套接字应用程序,该应用程序将通过TCP在某些端口上为传入的请求提供服务。映像构建良好,容器在本地运行。
但是,当部署到GCR时,它会引发以下错误
{
"textPayload": "terminated: Application failed to start: Failed to create init process: failed to load /usr/lib/jvm/java-17-openjdk//bin/java: exec format error",
"insertId": "631891ef0005eae9ece915df",
"resource": {
"type": "cloud_run_revision",
"labels": {
"project_id": "cumulus-0",
"service_name": "cumulus",
"revision_name": "cumulus-00001-hib",
"location": "asia-south1",
"configuration_name": "cumulus"
}
},
"timestamp": "2022-09-07T12:43:27.387764458Z",
"severity": "ERROR",
"labels": {
"instanceId": "00c527f6d4880e8a5a96fbdadc4536870f1e55a884c529efc6f860386bb3766d594380d65a657a35adebed119b05e2007cbef26928db216236f1641e97b306"
},
"logName": "projects/cumulus-0/logs/run.googleapis.com%2Fvarlog%2Fsystem",
"receiveTimestamp": "2022-09-07T12:43:27.390641080Z"
}特别是- terminated: Application failed to start: Failed to create init process: failed to load /usr/lib/jvm/java-17-openjdk//bin/java: exec format error
这是在不支持jvm的平台运行时发生的。但它在一个码头集装箱里。我不知道这是怎么回事。
这是我的Dockerfile
FROM alpine:latest
RUN apk update && \
apk add openjdk17-jre=17.0.4.1_p1-r0
ENV JAVA_HOME=/usr/lib/jvm/java-17-openjdk
LABEL in.rainycloud.cumulus="hi@shantanubanerjee.com"
COPY build/libs/cumulus*.jar /usr/lib/
CMD ["/usr/lib/jvm/java-17-openjdk/bin/java", "-jar", "/usr/lib/cumulus-v0.1.jar", "in.rainycloud.cumulus.Main"]
EXPOSE 33333/tcp发布于 2022-09-07 13:09:30
首先,这条路似乎很可疑。为什么必须提供完整的java bin路径。如果您的构建依赖于其他需要c的库,那么请使用完整的jdk进行尝试。
还有,检查这段代码。它为您的服务器提供了起点。
# java -jar /usr/local/runme/app.jar
ENTRYPOINT ["java","-jar","app.jar"]完整代码参考:https://mkyong.com/docker/docker-and-java-application-examples/
https://stackoverflow.com/questions/73635959
复制相似问题