我正在构建包含我的Java应用的自定义图像。
我基本上是在mvn clean install
内呼叫Dockerfile
。
我正在使用此RUN mvn -T 1C clean install
来加快流程。
每个可用的CPU核心将使用1个线程。这还够吗? mvn如何计算可用的cpu核心?我是否必须做一些事情才能告诉它检查主机的CPU而不是VM的?我使用Docker for Mac(据我所知,内部使用xhyve)。
更新
我正在构建一个模块(胖jar,嵌入tomcat的spring boot应用程序),maven 3.3.9,总持续时间约30分钟,没有线程提升。巨大的开销是它从S3中的私人仓库下载依赖关系。
答案 0 :(得分:1)
根据我的拙见,我认为由Dockerfile中的maven构建应用程序会带来更多问题而不是好处。
当您运行新的构建时,maven缓存为空,因此您的构建会花费很多时间来下载所有依赖项。
更改构建使用的threds不会给你带来性能提升。
您可以尝试使用maven准备一个docker镜像,并尝试运行一些maven命令来填充此图像构建中的maven缓存。 接下来,您将此图像用作项目的基础。
另一个解决方案可能是单独的下载依赖,并且构建在两个RUN中,感谢docker cache你的下一个构建可能会更快。
RUN mvn dependency:go-offline
RUN mvn clean install