docker 是否需要 linux 图像作为对 运行 嵌入式码头 spring 启动 war 文件的依赖

Does docker need a linux image as a dependency to run embedded-jetty spring boot war file

我有一个基于嵌入式码头的 spring 启动 war 文件,我可以 运行 在我的 windows OS 中使用以下内容命令,它工作正常。

java -jar my_app.war

我是 docker 的新手,我想 运行 我的 my_app.war 放在 docker 容器中。

现在要创建 my_app.war 的图像,我是否需要先包含一个 linux 图像依赖项,然后再添加 openjdk8 图像?

我可以单独使用 openjdk8 图像依赖项直接为 my_app.war 创建图像吗?

您应该从 [此处][1] 的其中一张照片中查看建筑物。

FROM openjdk:8-alpine
ADD ./path/to/war/my_app.war dir-in-container/my_app.war
CMD ["java", "-jar", "dir-in-container/my_app.war"]

这是我的想法,您可能需要 fiddle 一点点。通常使用像 Alpine 这样的轻量级图像,作为一般指针,不要在容器的基本路径中添加或复制文件。

两种方式都可以使用。 基本上 openjdk8 也会有一些图像依赖。 如果是 inux 映像,它会直接为您提供已解决依赖关系的 openjdk,您必须解决这些依赖关系。

参考:https://hub.docker.com/_/openjdk

是的。你需要添加openjdk image.

您可以使用 open-jdk-8.

构建这样的图像
FROM openjdk:8-jdk-alpine

VOLUME /tmp

ADD /build/libs/app.jar app.jar

ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]

我使用 Tomcat 图像作为 war 部署的基础:

这是 Dockerfile,如果您的项目以 Java11

运行,您可以尝试
FROM tomcat:9.0-jre11-slim

COPY target/libs/binsy.war /usr/local/tomcat/webapps/
ENV JAVA_OPTS="-server -Xmx3168m -Xms3168m"