Pau*_*us2 9 macos performance maven docker
我正在尝试设置一个 Docker 容器来使用 maven 构建我的 java 项目
我已经从 maven:3.2-jdk-7 创建了我的 Docker 文件并构建了映像。
当我执行时:
docker run -it --rm --name my-maven-project -v "$PWD":/usr/src/app -v "$HOME"/.m2:/root/.m2 -w /usr/src/ app -v "$HOME"/.ssh:/root/.ssh test mvn clean package -Dmaven.test.skip=true
大约需要 20 分钟才能完成..但如果我在主机上运行相同的 mvn 命令,则需要 2 分钟
我尝试通过使用为容器提供更多内存
-m 4GB
但它没有改变任何东西,查看 docker stats 容器几乎没有使用超过 2G
我正在从 OSX 运行所有这些
我需要做些什么才能在合适的时间内完成 Maven 项目?我非常惊讶在主机上需要 2 分钟时需要那么多时间..
这是 docker stats 在 maven 构建 10 分钟后所说的
CPU: 201.13%
Mem usage / limit : 2.508GiB
MEM % : 62.69%
NET I/O: 3.01kB / 861B
BLOCK I/O: 57.7MB / 2.23MB
PIDS: 38
Run Code Online (Sandbox Code Playgroud)
- 编辑 - 事实证明 Docker for mac 在使用挂载卷时不能很好地发挥作用。为了避免在容器内 git clone 项目,我更喜欢使用 -v "$PWD":/usr/src/app
为了测试,我直接 git 克隆了容器内的应用程序表单,现在构建需要正常的时间(4 分钟)
请注意,git clone 花费了... 6 分钟!!!相反(主机上 1 分钟)所以从 git clone 到最终构建总共需要 10 分钟,这太荒谬了。
所以是的,OSX 和 Docker 在使用挂载卷时是一个很大的禁忌......
我使用与您相同的 docker run 语法遇到了同样的问题(docker run -v src:dest)。Maven 构建在我的 OSX 主机上花费了约 30 秒,而在我的容器中花费了约 4 分钟。我没有完全解决这个问题,但是切换到显式使用绑定安装使我的构建时间从大约 4 分钟缩短到大约 1.5 分钟。对于我的用例来说,这仍然不是可接受的构建时间增加,但它可能对其他人有帮助。尝试将 docker run 命令切换为:
docker run --name=my-maven-project -it \
--mount type=bind,source="$(pwd)",destination=/usr/src/app,consistency=delegated <docker image name>
Run Code Online (Sandbox Code Playgroud)
注意:最后的一致性选项仅在 OSX 上有效,并且还有其他两个值,其中任何一个都可能更适合您的情况。出于好奇,我尝试了所有三个选项,并且委托选项和缓存选项之间的构建时间相当,同时一致选项几乎与我之前执行的方式一样慢(毫不奇怪)。这是文档:
https://docs.docker.com/storage/bind-mounts/
因此,不幸的是,尽管绑定挂载“性能非常好”,但在 Maven 构建方面,它们显然仍然比本机文件系统慢至少两倍,至少在 OSX 上是这样。运气好的话,随着时间的推移,情况会有所改善。
| 归档时间: |
|
| 查看次数: |
3002 次 |
| 最近记录: |