带有 Docker 的 Spring Boot 2.3。当我在同一个存储库中有多个 Spring Boot 应用程序时,我想为特定应用程序构建映像
Posted
技术标签:
【中文标题】带有 Docker 的 Spring Boot 2.3。当我在同一个存储库中有多个 Spring Boot 应用程序时,我想为特定应用程序构建映像【英文标题】:Springboot 2.3 with Docker. I want to build image for a specific app when I have multiple springboot applications in same repository 【发布时间】:2020-11-05 19:50:06 【问题描述】:构建springboot应用2.3版本。我想用云原生构建包构建一个 docker 镜像。我的存储库中有 2 个 springboot 应用程序,例如 App A 和 App B。通常,我会执行 mvn install,拿起 jars 并单独启动它们。为 aapp a 运行 jar “a”,为 app b 运行 jar “b”。现在,我如何告诉构建包我想在哪个 jar 上构建我的 docker 映像。
【问题讨论】:
我不明白你的问题。只需启动 mvn spring-boot:build-image 您使用什么工具来运行构建?pack
或其他平台,如 kpack
?
我还想提出一个问题,为什么您在一个存储库中有 2 个可运行的 Spring Boot 应用程序。我想稍后根据部署来塑造我的 Git 存储库。如果你单独部署它们(我假设),也许是时候考虑将它们重构到单独的存储库中了......如果有代码要共享,你最终可能会为此拥有第三个 repo,它会生成一个 Maven 模块被其他人使用。
【参考方案1】:
基于stack 或other answers,您可以使用advanced reactor options 来定位reactor 中的单个模块并仅为该模块构建映像。
类似的命令
mvn -pl <module-name> -am spring-boot:build-image
很可能会给你想要的东西。
【讨论】:
【参考方案2】:无论您使用哪个平台,您都应该能够将构建指向您的相关子目录。例如,如果您使用pack
,则可以使用pack build -p <repo dir>/<app A dir>
。根据您使用的 Java buildpack,它应该为您运行 Maven 并设置生成的 JAR 以在应用映像启动时启动。
【讨论】:
以上是关于带有 Docker 的 Spring Boot 2.3。当我在同一个存储库中有多个 Spring Boot 应用程序时,我想为特定应用程序构建映像的主要内容,如果未能解决你的问题,请参考以下文章
带有spring boot和kafka的docker内部信任库的问题路径
带有 Spring Boot 的 Docker 和 Eureka 无法注册客户端
带有 Docker 容器化 Spring Boot 应用程序的 HTTPS 不起作用
带有 Spring Boot 应用程序的 docker secret 在 docker swarm 模式 /run/secrets 下不起作用