简单的Docker容器在docker run命令后立即死亡

时间:2019-04-24 07:18:08

标签: 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在generator /文件夹中。我正在使用它来构建它:

docker build -t generator generator/

它构建成功:

Successfully built 878e81f622cc
Successfully tagged generator:latest

但是当我尝试使用该图像运行时

docker run -d -p 8080:8080 generator

它立即死亡。 docker logs没有输出。

我的Dockerfile有什么问题?为什么集装箱快死了?

2 个答案:

答案 0 :(得分:1)

尝试运行JAR。当前,它仅运行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"]

答案 1 :(得分:0)

除了您的入口点错误(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"]