【问题标题】:Docker with npm install adds unwanted symlink带有 npm install 的 Docker 添加了不需要的符号链接
【发布时间】:2018-06-27 01:53:10
【问题描述】:

我正在尝试为我的项目构建一个需要本地模块的 nodejs 容器。在我的 package.json 中,我得到了一个指向上面文件夹的相对链接,因为本地模块位于其中。一切似乎都正常工作,除了在容器内,本地模块作为符号链接添加到主机(Windows)。

此行为仅在我使用 dockerfile 构建时发生,如果我在容器内手动执行 npm install,则模块会按预期复制到 node_module 中。

package.json 条目:

"app-lib": "file:../app_lib"

码头文件:

FROM node:8.9-alpine
ENV NODE_ENV production
WORKDIR /usr/src/app
COPY ["./Provider/package.json", "./Provider/package-lock.json*", "./Provider/npm-shrinkwrap.json*", "./"]
COPY ["./app_lib/package.json", "./app_lib/package-lock.json*", "./app_lib/npm-shrinkwrap.json*", "../app_lib/"]
RUN cd ../app_lib && npm install
COPY ./app_lib .
RUN cd ../app && npm install
COPY ./Provider .
EXPOSE 3001

烦人的符号链接:

app-lib -> E:\work\app_server\app_lib\

有人对如何使其在构建中正常工作或为什么可能是根本原因有任何建议?

【问题讨论】:

  • 哦,在我忘记之前,已经尝试过 --no-bin-link 并且它似乎不起作用
  • .dockerignore 中有 node_modules 吗?否则 COPY ./app_lib . 将覆盖相同
  • 就是这样..我在 .dockerignore 中有 node_modules 但一直没有意识到它缺少“**/”

标签: node.js docker npm


【解决方案1】:

确保您在.dockerignore 中有node_modules,否则COPY ./app_lib . 将覆盖相同的内容,您将获得您所看到的行为

【讨论】:

  • 如果有人碰到这个,就像上面评论的那样,检查“**/”以忽略所有子文件夹,因为这是罪魁祸首。
  • 所以你做了2个条目?或node_modules/**/?
  • 我让**/node_modules 将所有目录包含在任何子目录中。
猜你喜欢
  • 2017-01-10
  • 2015-12-27
  • 2021-11-07
  • 2022-11-24
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-21
相关资源
最近更新 更多