gpt4 book ai didi

node.js - Docker 从 npm install 组合 v3 命名卷和 node_modules

转载 作者:搜寻专家 更新时间:2023-10-31 22:54:02 26 4
gpt4 key购买 nike

使用撰写 v3。

在构建中,我复制 package.json 并运行 npm install

/var/www/project/node_modules

我没有在构建阶段添加任何代码。

在 compose 中我添加了 volumes

- ./www:/var/www/project/www

众所周知,绑定(bind)到/www 的主机将有效地“覆盖”我在构建阶段安装的 node_modules。

这就是我们之后添加命名模块的原因

- ./www:/var/www/project/www
- modules:/var/www/project/www/node_modules

这在我们第一次构建/运行项目时工作得很好而且很花花公子

由于命名卷“modules”不存在,构建阶段的 www/node_modules 将被安装。

但是,这是实际问题。

下次我对 package.json 进行更改并执行以下操作时:

docker-compose up --build 

我可以看到新的 npm 模块是如何安装的,但是一旦附加了命名的“模块”卷(它现在存在上次运行的东西),它就会“覆盖”镜像中新安装的模块。

在很多地方都建议使用上述添加命名卷的方法作为 Node 模块问题的补救措施。但据我从大量测试中可以看出,这只有效一次。

如果我每次更改 package.json 时都重命名命名卷,那当然可以。

最佳答案

更好的做法是在入口点脚本中包含 rm 命令,以便在运行 npm install 之前清除 Node 模块。

作为替代方案,您可以在运行另一个构建之前使用 $ docker system prune。这将确保没有使用更早的东西。

关于node.js - Docker 从 npm install 组合 v3 命名卷和 node_modules,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43538187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com