gpt4 book ai didi

node.js - npm package.json 和 docker(安装它...)

转载 作者:IT老高 更新时间:2023-10-28 21:21:49 26 4
gpt4 key购买 nike

我正在使用 Docker,所以这个案例可能看起来很奇怪。但是我希望在开发时将整个 /data 目录安装在我的 docker 容器中。

我的 /data 文件夹包含我的 package.json 文件、一个 app 目录和一堆其他东西。问题是我希望我的 node_modules 文件夹不是持久的,只有 package.json 文件。

我已经尝试了几件事,但是 package.jsonnpm 让我很难过...

  • 直接挂载 package.json 文件会破坏 npm。 npm 尝试在保存时重命名文件,这在挂载文件时是不可能的。
  • 挂载父文件夹 (/data) 将挂载 node_modules 文件夹。
  • 我找不到任何配置选项可以将 node_modules 放在 /data 之外的另一个文件夹中,例如 /dist
  • package.json 放在 /data/conf 中,将 /data/conf 安装为卷而不是工作。我找不到任何方法来指定 npmrc 中的 package.json 路径。
  • package.json 放入 /data/conf 并将其符号链接(symbolic link)到 /data/package.json 将不起作用。 npm 断开符号链接(symbolic link)并将其替换为文件。

在 docker 容器内来回复制数据是我现在的做法。有点乏味。我还想要一个干净的解决方案。

最佳答案

正如您已经回答的那样,我认为这可能是目前唯一的解决方案。

在构建 Docker 镜像时,请执行以下操作:

COPY data/package.json /data/
RUN mkdir /dist/node_modules && ln -s /dist/node_modules /data/node_modules && cd /data && npm install

对于其他东西(比如凉亭,做同样的事情)

COPY data/.bowerrc /data/
COPY data/bower.json /data/
RUN mkdir /dist/vendor && ln -s /dist/vendor /data/vendor && cd /data && bower install --allow-root

最后是 COPY data//data (所以当 data 发生变化时,您可以使用 Dockers 缓存而不必安装 npm/docker >.

您还需要创建所需的符号链接(symbolic link)并将它们存储在您的 git-repo 中。它们在外部无效,但很可能在您的容器内部起作用。

使用此解决方案,您可以挂载您的 $PWD/data:/data,而无需将 npm/bower “垃圾”放在容器外。而且您仍然可以将镜像构建为服务的独立部署。

关于node.js - npm package.json 和 docker(安装它...),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26757264/

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