我正在尝试在本地配置一个使用 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-sync .
该工具支持主机和容器之间自动同步的不同策略(包括rsync
)。
但是,请注意它有自己的问题,例如偶尔同步卡住。
关于node.js - 与主机相比,docker 容器中的 npm install 速度慢 4 倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60385052/