与主机相比,npm在Docker容器中安装速度慢4倍

时间:2020-02-24 22:47:53

标签: node.js performance docker npm docker-compose

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

我正在使用npm install和节点版本nvm在主机(MacBook Pro Retina,15英寸,2015年中)上运行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

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

谢谢

1 个答案:

答案 0 :(得分:1)

此速度下降是由于容器与主机之间共享文件引起的。 为了解决这个问题,您可以尝试尝试docker-sync

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

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