node.js - 与主机相比,docker 容器中的 npm install 速度慢 4 倍

标签 node.js performance docker npm docker-compose

我正在尝试在本地配置一个使用 NodeJs 和 NPM 的项目。

我正在运行npm install在我的主机(MacBook Pro Retina,15 英寸,2015 年中)上使用 nvm Node 版本10.19 :

added 2335 packages from 985 contributors and audited 916010 packages in 61.736s

当我在 Docker 中运行相同的设置时,结果要慢得多。这是我的docker-compose.yml文件:

version: '3.4'
services:
  node:
    image: node:10.19-alpine
    container_name: node
    volumes:
      - .:/app/
      - npm-cache:/root/.npm
    working_dir: /app
    command: ["tail", "-f", "/dev/null"]

volumes:
  npm-cache:
    external: false

然后我执行:

 docker-compose up -d node; docker exec -t node npm install

结果是:

added 2265 packages from 975 contributors and audited 916010 packages in 259.895s

(我假设由于平台不同,生成的包的数量也不同)。

我认为快速安装是通过本地缓存实现的(这就是为什么 docker-compose 中有一个额外的卷用于缓存),但后来我运行了:

$ npm cache clean --force && rm -rf ~/.npm && rm -rf node_modules

并且在主机上安装的结果仍然一致为约 60 秒。

当涉及到分配给 Docker VM 的资源时,这应该不是问题,这是我的 Docker VM 配置:

docker settings docker version

我不知道还能去哪里寻找,任何帮助将不胜感激。

谢谢

最佳答案

这种速度减慢是由容器和主机之间共享文件引起的。 为了应对它,您可以尝试docker-sync .

该工具支持主机和容器之间自动同步的不同策略(包括rsync)。

但是,请注意它有自己的问题,例如偶尔同步卡住。

关于node.js - 与主机相比,docker 容器中的 npm install 速度慢 4 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385052/

相关文章:

docker - 进行更改后,GitLab docker镜像不会从gitlab.rb重新配置某些参数

ubuntu - docker无法连接到archive.ubuntu.com :http: [IP: 209. 6.3.210 80]

node.js - 如何使用webpack和babel转换ES6服务器端Node文件?

javascript - 如何用函数扩展 pg-promise 接口(interface)

javascript - 为什么这个子 Node 在 Firebase Cloud Functions 中没有被删除?

performance - 合并排序、快速排序还是堆排序?

MongoDB 在处理重复查询时变得更快

node.js - 如何在将数据添加到nodejs中的文件后立即从音频文件中读取数据作为缓冲区?

asp.net - Umbraco 版本 5 出了什么问题?

bash - Docker 在入口点运行脚本