我正在创建一个微服务,以使用Docker和Kubernetes部署在云上。这需要来自不在任何公共存储库上的多个Maven Java项目中的代码。例如,microservice
项目对analytics
项目具有依赖性,而model
项目对microservice
项目具有依赖性。这些项目的POM之间没有继承关系。在本地,microservice
Maven项目使用本地Maven信息库中已有的工件成功构建。但是,当我尝试从analytics
项目构建容器时,它失败了,因为docker构建中的Maven在容器的Maven存储库中找不到model
和model
jars。
使analytics
和{{1}}项目可用于映像构建,以便构建docker映像的最佳选择是什么?
答案 0 :(得分:0)
因此docker中的构建看不到仅安装在本地Maven中的工件。如果它们在逻辑上可以放在一起(即只一起使用过),那么将它们组合成具有单个父pom的单个多模块Maven构建是有意义的。听起来这可能是您的情况。
否则,您最好的选择是:
1托管docker当前在公共存储库中看不到的工件。如果您有联系,可以使用,可以将其安装在此处。
2在docker外部构建jar并将其复制到其中。这意味着对dockerfile进行更改,并有效地在构建过程中执行了Maven pre-docker步骤。
3 2的变体,但将Maven和docker步骤与Maven插件结合在一起。例如,您可以使用Spotify docker Maven插件。