Java 简单Docker容器在Docker运行命令后立即死亡
我有一个Dockerfile,如下所示: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
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,可能是的重复