【问题标题】:pre-cache node_modules in Docker container在 Docker 容器中预缓存 node_modules
【发布时间】:2016-12-08 17:58:15
【问题描述】:

令我沮丧的是,为使用 Node 工具链(如 Grunt 和 Gulp)的项目构建 CI 需要相当长的时间,其中大部分时间都被 npm install 消耗。

我尝试设置一个 Docker 映像,在 npm 缓存中预烘焙了所有 node_module 依赖项(每个都与我的 package.json 文件中声明的相同的固定版本),但即便如此构建仍然真正需要做的就是将几个目录从 npm 缓存复制到我项目的 node_modules 中。

我已将 cache-min 设置为 9999999,但它似乎仍然需要比预期更长的时间。

我查看了 local-npmnpm_lazy 但它们似乎超出了顶部,并且前者需要很长时间才能安装 - 我怀疑它正在尝试下载现有的每个 npm 模块 - 我只需要有限的数量和无需运行 Web 服务器即可从 Docker 容器中为它们提供服务。

...我错过了什么吗?必须有更快的方法来运行 CI 构建...

【问题讨论】:

  • 您是否检查过下载包含 npm 模块的基于图像需要多少时间?
  • @atv 不,这不是问题所在。镜像下载其实挺快的,但即使是固定版本,npm 还是想下载和构建所有东西,而不是仅仅从缓存中复制目录
  • @NicholasAlbion 你能分享你的 Dockerfile 吗?我现在正在尝试做类似的事情

标签: node.js docker npm continuous-integration npm-install


【解决方案1】:

我能够通过使用 .npmrc 指向 docker 容器中的 npm 缓存来使其工作。我建议您将 docker exec 放入您的容器并运行 npm config list | grep cache 以确保使用缓存。

【讨论】:

  • 您能否发布更多详细信息,具体步骤如何操作?
猜你喜欢
  • 1970-01-01
  • 2020-10-06
  • 2021-07-12
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
相关资源
最近更新 更多