Java 映像生成期间的多线程处理
我正在构建一个包含java应用程序的自定义映像。 基本上,我是在Java 映像生成期间的多线程处理,java,maven,docker,Java,Maven,Docker,我正在构建一个包含java应用程序的自定义映像。 基本上,我是在Dockerfile中调用mvn clean install。 我正在使用这个运行mvn-t1c clean install,以加快进程 这将为每个可用CPU核心使用1个线程。这够了吗?mvn如何计算可用的cpu内核?我是否必须做些什么才能让它检查主机的CPU而不是VM?我正在使用Docker for Mac(据我所知,它在内部使用xhyve) 更新: 我正在构建一个模块(fat jar,嵌入tomcat的spring boot应用
Dockerfile
中调用mvn clean install
。
我正在使用这个运行mvn-t1c clean install
,以加快进程
这将为每个可用CPU核心使用1个线程。这够了吗?mvn如何计算可用的cpu内核?我是否必须做些什么才能让它检查主机的CPU而不是VM?我正在使用Docker for Mac(据我所知,它在内部使用xhyve)
更新:
我正在构建一个模块(fat jar,嵌入tomcat的spring boot应用程序),maven 3.3.9,在没有线程提升的情况下,总持续时间约为30分钟。巨大的开销是它从S3中的私有repo下载依赖项。根据我的拙见,我认为maven在Dockerfile中构建应用程序会带来更多的问题而不是好处 当您运行新构建时,maven缓存为空,因此您的构建会花费很多时间下载所有依赖项 更改build使用的thred不会给您带来任何性能提升 您可以尝试使用maven准备一个docker映像,并尝试运行一些maven命令来填充此映像构建中的maven缓存。 接下来,您将使用此图像作为项目的基础 另一个解决方案可能是在两次运行中分离下载依赖项和构建,感谢docker cache,您的下一次构建可能会更快
RUN mvn dependency:go-offline
RUN mvn clean install
Docker for Mac是在VirtualBox上运行的虚拟机(boot2docker)。我认为您可以打开VirtualBox并重新配置boot2docker VM?没有
-T..
,构建需要多长时间?您使用哪个Maven版本?@TuanDocker for Mac是我们针对Mac的最新产品。它作为本机Mac应用程序运行,并使用xhyve虚拟化Docker引擎环境和Docker守护程序的Linux内核特定功能。
@khmarbaise One module(fat jar,spring boot application),maven 3.3.9,大约30分钟。巨大的开销是它从S3中的私有repo下载依赖项。如果您只有一个模块,那么选项-T..
将不会提高构建性能。从s3下载的内容应该由存储库管理器代理/缓存,这将提高构建性能。。。