我目前正在为我的应用程序开发 Node 后端。当对它进行 dockerizing ( docker build .
) 时,最长的阶段是 RUN npm install
。 RUN npm install
指令在每个小的服务器代码更改上运行,这会通过增加构建时间来阻碍生产力。
我发现在应用程序代码所在的位置运行 npm install 并使用 ADD 指令将 node_modules 添加到容器中可以解决此问题,但这远非最佳实践。它有点打破了将它码头化的整个想法,并导致容器更重。
还有其他解决方案吗?
原文由 ohadgk 发布,翻译遵循 CC BY-SA 4.0 许可协议
好的,所以我在编写 docker 文件时发现 了这篇关于效率的好文章。
这是在运行
RUN npm install
指令之前添加应用程序代码的错误 docker 文件的示例:通过将应用程序的副本分成 2 个 COPY 指令(一个用于 package.json 文件,另一个用于其余文件)并在添加实际代码之前运行 npm install 指令,任何代码更改都不会触发 RUN npm install指令,只有 package.json 的变化才会触发它。更好的实践 docker 文件:
这是添加 package.json 文件的地方,安装它的依赖项并将它们复制到应用程序所在的容器 WORKDIR 中:
为了避免每个 docker build 上的 npm install 阶段,只需复制这些行并将 ^/opt/app^ 更改为您的应用程序在容器内的位置。