Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 简单Docker容器在Docker运行命令后立即死亡_Java_Docker_Dockerfile_Devops_Alpine - Fatal编程技术网

Java 简单Docker容器在Docker运行命令后立即死亡

Java 简单Docker容器在Docker运行命令后立即死亡,java,docker,dockerfile,devops,alpine,Java,Docker,Dockerfile,Devops,Alpine,我有一个Dockerfile,如下所示: FROM alpine:3.9 RUN apk add --update openjdk8 RUN mkdir /var/generator/ COPY generator.jar /var/generator EXPOSE 8080 ENTRYPOINT [ "/bin/sh" ] Dockerfile位于生成器/文件夹中。我正在使用以下方法构建它: docker build -t generator generator/ 它成功地构建了: Su

我有一个Dockerfile,如下所示:

FROM alpine:3.9

RUN apk add --update openjdk8
RUN mkdir /var/generator/
COPY generator.jar /var/generator
EXPOSE 8080
ENTRYPOINT [ "/bin/sh" ]
Dockerfile位于生成器/文件夹中。我正在使用以下方法构建它:

docker build -t generator generator/
它成功地构建了:

Successfully built 878e81f622cc
Successfully tagged generator:latest
但是当我试着用

docker run -d -p 8080:8080 generator
它马上就死了<代码>docker日志不提供任何输出


我的Dockerfile有什么问题?为什么容器会死掉?

试着运行罐子。目前,它只运行
sh
命令并退出。在前台运行JAR,如下所示-

FROM alpine:3.9

RUN apk add --update openjdk8
RUN mkdir /var/generator/
COPY generator.jar /var/generator
EXPOSE 8080
ENTRYPOINT ["java","-jar","/var/generator/generator.jar"]

除了您的入口点是错误的(
sh
立即退出)之外,我还建议您从一个合适的基本映像开始,而不是从alpine开始安装openjdk包。因为您想要运行java应用程序,所以只需使用JRE而不是完整的JDK,并将应用程序作为前台进程启动

这是一个最小版本,它在磁盘大小方面也更有效,因为映像会更小

FROM openjdk:8-jre-alpine

COPY generator.jar /opt/generator.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/opt/generator.jar"]

docker容器执行命令
/bin/sh
并退出。您应该运行一个进程来阻止它退出,因为您使用的ENTRYPOINT[“/bin/sh”],这表示为空shell,您没有执行generator.jar,可能是的重复