我将大部分开发流程转移到docker中,以确保计算机之间的并行开发环境,因此版本不匹配等不存在奇怪的错误或问题。
所有这一切都很好,除了在docker中运行webpack-dev-server之外,构建过程比我在计算机上本地运行时要慢得多。 (比如在码头工作3-5分钟,在本地30秒到1分钟)。有什么方法可以加快速度吗?这只是一个问题,Docker / webpack通过已安装的卷与我的硬盘驱动器上的大量文件进行交互吗?
如果重要的话,我的主机系统是在i7上使用16bg内存运行High Sierra的Mac。
我正在运行docker for mac,docker -v返回:Docker版本17.12.0-ce,build c97c6d6
我希望所有这些都足够清楚,如果我可以添加任何信息,请告诉我!
答案 0 :(得分:7)
对于那些处于类似位置的人,正如马特所说,问题来自于装载音量。我使用docker的卷缓存模式大大加快了构建速度。 The docs on it are here.
命令看起来像这样:
docker run -v \local\director:docker\directory:cached dockerImage
答案 1 :(得分:1)
除了在您的docker-compose.yaml文件中添加 cached 卷标志之外,
version: '3'
services:
front:
container_name: my-front-dev
image: my-front-dev-image
build:
context: .
dockerfile: front/Dockerfile.dev
ports:
- 5002:80
volumes:
- ./front/:/app/:rw,cached
我还建议您将docker-for-mac升级到最新版本(将bump升级到2.0.0版在我的Mac上具有显着的性能改进)。
最后的建议是在docker-for-mac设置中提高默认CPU /内存限制:
答案 2 :(得分:0)
根据文档,我建议使用delegated
代替cached
:
已缓存:在这种情况下,主机是权威的。可能会有延迟 在主机上进行写操作之前,该容器才可用。
已委派:该容器具有权威性。可能会有延迟,直到 容器中的更新将显示在主机上。
因此docker-compose文件如下:
version: '3'
services:
front:
container_name: my-front-dev
image: my-front-dev-image
build:
context: .
dockerfile: front/Dockerfile.dev
ports:
- 5002:80
volumes:
- ./front/:/app/:rw:delegated