RB2*_*B26 5 continuous-integration npm jenkins docker npm-install
Jenkins在ECS中运行。我们正在使用管道进行构建和部署过程。管道使用docker插件提取具有某些依赖关系的映像以进行测试等,然后我们所有的步骤都在此docker容器内进行。
当前存在的问题是,我们的NPM安装大约需要8分钟。我们希望加快这一过程。在每次构建结束时拆除容器时,将丢弃生成的node_modules。我考虑过NPM缓存,但是由于Docker的性质,这似乎无关紧要,除非我们将依赖项预先安装到Docker映像中(但这几乎使映像的大小增加了三倍)。是否有简单的解决方案可以帮助我们提高NPM的安装速度?
您应该使用包缓存而不是node_modules直接缓存。相反,您挂载您的包安装程序使用的缓存目录,并且您的安装将非常快速。Docker 确实通过允许您在容器中挂载目录来实现这一点,这些目录在构建中持续存在。
用于yarn安装~/.cache或~/.cache/yarn
用于npm安装~/.npm
docker run -it -v ~/.npm:/.npm ~/.cache:/.cache /my-app:/my-app testing-image:1.0.0 bash -c 'npm ci && npm test`
Run Code Online (Sandbox Code Playgroud)
注意:我在npm ci这里使用,它将始终删除 node_modules并使用package-lock.json. (在纱线中,这是yarn install --frozen-lockfile)