我有一个包含主类的 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