我尝试使用maven
设置Docker容器来构建我的java项目我已经创建了我的Docker文件FROM maven:3.2-jdk-7并构建了图像。
当我执行时:
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
但它并没有改变任何东西,看着这个容器勉强使用超过2G的码头统计数据
我从OSX运行所有这些
我有什么需要做的,以便在适当的时间内完成maven吗?我非常惊讶它在主机上花了2分钟就需要这么多..
这是码头统计数据在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不能很好地播放。 为了避免必须git克隆容器内的项目,我首选使用-v" $ PWD":/ usr / src / app
要测试我已经直接git克隆了容器中的app表单,现在构建需要正常的时间(4分钟)
请注意,git clone需要... 6分钟!相反(在主机上1分钟)所以从git clone到最终构建总共需要10分钟这是荒谬的。
所以当使用装载音量时,OSX和Docker是一个很大的禁忌......
答案 0 :(得分:1)
我使用与您相同的docker run语法(docker run -v src:dest)遇到了同样的问题。在OSX主机上花费大约30秒的Maven构建在我的容器中花费了大约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>
注意:一致性选项最后仅在OSX上有效,并且具有其他两个值,其中两个值都可能更适合您的情况。出于好奇,我尝试了这三个选项,委托和缓存选项之间的构建时间是可比的,与此同时,一致选项的速度几乎和以前一样慢(毫不奇怪)。这是文档:
https://docs.docker.com/storage/bind-mounts/
因此,不幸的是,尽管绑定挂载“非常高效”,但在进行Maven构建时,至少在OSX上,它们的速度显然仍然是本地文件系统的两倍。运气会随着时间的推移而改善。