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



我有一个看起来像这样的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 logs不提供输出。

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

尝试运行 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"]

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

相关内容

  • 没有找到相关文章

最新更新