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

问题描述 投票:0回答:2

我有一个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有什么问题?为什么容器会死?

java docker dockerfile devops alpine
2个回答
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"]

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"]
© www.soinside.com 2019 - 2024. All rights reserved.