docker – 加速Jenkins的NPM构建

我们让Jenkins在ECS中运行.我们正在使用管道进行构建和部署过程.管道使用docker插件来提取具有一些依赖性以进行测试等的图像,然后我们的所有步骤都在此docker容器中发生.

我们目前的问题是我们的NPM安装大约需要8分钟.我们想加快这个过程.当容器在每个构建结束时被拆除时,生成的node_modules将被丢弃.我考虑过NPM缓存,但是由于docker的性质,这似乎无关紧要,除非我们将依赖项预先安装到docker镜像中(但这几乎是图像大小的三倍).有没有简单的解决方案来帮助我们的NPM安装速度?

最佳答案 您应该使用包缓存,但不能直接缓存node_modules.而是安装程序包安装程序使用的缓存目录,并且您的安装将非常快速. Docker确实可以通过允许您在容器中挂载目录来实现这一点,该容器在构建中持久存在.

用于纱线安装〜/ .cache或〜/ .cache /纱线
对于npm mount~ / .npm

docker run -it -v ~/.npm:/.npm ~/.cache:/.cache /my-app:/my-app testing-image:1.0.0 bash -c 'npm ci && npm test`

注意:我在这里使用npm ci,它将始终删除node_modules并使用package-lock.json中的确切版本重新安装,因此您可以获得非常一致的构建. (在纱线中,这是纱线安装 – 冷冻锁文件)

点赞