【发布时间】:2018-03-24 14:36:17
【问题描述】:
我正在尝试设置一个 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 测试 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
- 编辑 - 事实证明 Docker for mac 在使用挂载卷时播放效果不佳。 为了避免在容器中克隆项目,我更喜欢使用 -v "$PWD":/usr/src/app
为了测试,我直接 git 克隆了容器中的应用程序表单,现在构建需要正常的时间(4 分钟)
请注意,git clone 花了... 6 分钟!!!相反(主机上 1 分钟),所以从 git clone 到最终构建总共需要 10 分钟,这太荒谬了。
所以是的,OSX 和 Docker 在使用挂载卷时是一个很大的禁忌......
【问题讨论】:
-
嗯,这取决于...第一次构建会更慢,直到 Maven 从远程存储库下载所有依赖项。之后,除非您重建实例,否则应该没问题。你试过不止一次吗? :)
-
是的,如您所见,我正在安装已经具有所有依赖项的主机卷 (.m2)。所以容器中的maven不需要下载任何东西
-
您运行的是当前版本的 docker 吗?它在 OS X 上的文件系统性能方面存在一些问题。
-
输出是什么...?这是在下载依赖项时发生的,还是...?
-
我正在运行版本 17.06.0-ce-mac19 (18663) 更新到 17.09.0-ce-mac35 (19611) 并没有解决问题。在容器上构建仍然需要 20 分钟
标签: macos performance maven docker