运行基本码头坞映像的主类



我有一个包含主类的 Spring 启动应用程序。我有码头工人文件如下:

FROM docker.io/openjdk:11-jre-slim
EXPOSE 8082
EXPOSE 8443
ADD target/base-application.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT exec java $JAVA_OPTS -Dspring.profiles.active=prod -jar /app.jar

我正在使用此 Docker 文件创建 Docker 映像。让我们考虑这个 docker 文件是 Docker1。

我有另一个带有 Docker 文件的 Spring 启动应用程序(没有 Main 类(,如下所示:

FROM Docker1:0.0.1
EXPOSE 8443
ADD target/child-application.jar app.jar
ENV JAVA_OPTS=""
ENTRYPOINT exec java $JAVA_OPTS -Dspring.profiles.active=dev -jar /app.jar

我使用 Docker1 作为第二个应用程序的 docker 映像的基础映像。当我尝试运行第二个 docker 映像时,出现错误"/app.jar 中没有主清单属性"。你能帮我通过运行第二个 Docker 镜像来运行 Docker1 的主类吗?

所以你想从目标/基本应用程序.jar文件运行主类。Docker2 中的下行将基本应用程序.jar替换为子应用程序.jar

ADD target/child-application.jar app.jar

要解决此问题,您可以将第二个 Docker 文件修改为:

FROM Docker1:0.0.1
EXPOSE 8443
ADD target/child-application.jar child-application.jar
ENV JAVA_OPTS=""
ENTRYPOINT exec java $JAVA_OPTS -Dspring.profiles.active=dev -jar /app.jar

最新更新