微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Dockerizing 多模块 Maven 应用程序?

如何解决Dockerizing 多模块 Maven 应用程序?

我有一个 Maven Java 应用程序,我正在尝试对其进行 dockerize。到目前为止,我有以下 dockerfile,我是从 this answer 复制的。

#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
copY src /home/app/src
copY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean install

EXPOSE 8080 9990

copY --from=build /usr/src/app/target/helloworld-1.0.0-SNAPSHOT.jar /opt/jboss/jboss-eap-6.2/standalone/deployments/

如果我的应用程序是单模块项目,这会很好,但是因为它是多模块的,我假设我不能只使用 copY src /home/app/src

如何更改我的 dockerfile 以适应我的多模块项目?

我尝试了以下方法

#
# Build stage
#
FROM maven:3.6.0-jdk-11-slim AS build
copY module1 /home/app
copY module2 /home/app
copY module3  /home/app
copY pom.xml /home/app
RUN mvn -f /home/app/pom.xml clean install

EXPOSE 8080 9990
    
copY --from=build /usr/src/app/target/helloworld-1.0.0-SNAPSHOT.jar /opt/jboss/jboss-eap-6.2/standalone/deployments/

然而,这会在 mvn clean install 阶段出现错误

[ERROR] [ERROR] Some problems were encountered while processing the POMs:
[FATAL] Non-resolvable parent POM for myapp:21.01-SNAPSHOT: Could not find artifact jee6:pom:1.0.1-SNAPSHOT and 'parent.relativePath' points at wrong local POM @ line 8,column 10

请注意,jee6:pom:1.0.1-SNAPSHOT 来自我本地的 m2 文件夹。

解决方法

您可以有一个额外的集成模块,它依赖于其他模块,负责将组件收集到 Docker 镜像中。也是放置集成测试的好地方。

,

我只会使用 maven jib 插件而不是手工制作 Dockerfile。更容易,我认为它也应该适用于多模块项目

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。