图像构建期间的多线程

时间:2016-11-23 07:01:54

标签: java maven docker

我正在构建包含我的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中的私人仓库下载依赖关系。

1 个答案:

答案 0 :(得分:1)

根据我的拙见,我认为由Dockerfile中的maven构建应用程序会带来更多问题而不是好处。

当您运行新的构建时,maven缓存为空,因此您的构建会花费很多时间来下载所有依赖项。

更改构建使用的threds不会给你带来性能提升。

您可以尝试使用maven准备一个docker镜像,并尝试运行一些maven命令来填充此图像构建中的maven缓存。 接下来,您将此图像用作项目的基础。

另一个解决方案可能是单独的下载依赖,并且构建在两个RUN中,感谢docker cache你的下一个构建可能会更快。

RUN mvn dependency:go-offline
RUN mvn clean install