在docker中运行Webpack-dev-server比在本地机器上慢得多

时间:2018-03-01 22:58:21

标签: macos docker webpack

我将大部分开发流程转移到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

我希望所有这些都足够清楚,如果我可以添加任何信息,请告诉我!

3 个答案:

答案 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 /内存限制

docker cpu/memory limits

答案 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