我正在尝试在本地配置使用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配置:
我不知道还能去哪里,任何帮助将不胜感激。
谢谢
答案 0 :(得分:1)
此速度下降是由于容器与主机之间共享文件引起的。 为了解决这个问题,您可以尝试尝试docker-sync。
此工具支持在主机和容器(包括rsync
)之间自动同步的不同策略。
但是,请注意,它有自己的问题,例如偶尔的同步冻结。