创建dockerfile时遵循符号链接

创建dockerfile时遵循符号链接,docker,symlink,dockerfile,Docker,Symlink,Dockerfile,我编写了一个Dockerfile,用给定代码创建一个新的node.js容器: FROM node:latest RUN mkdir -p //usr/src/app WORKDIR /usr/src/app COPY . /usr/src/app RUN npm install EXPOSE 8080 EXPOSE 5858 CMD [ "npm", "start" ] 没什么复杂的。但现在我向文件夹添加了一个符号链接,它应该添加到容器中。但是,如果我尝试运行容器,我会收到一条错误消息,说明找

我编写了一个Dockerfile,用给定代码创建一个新的node.js容器:

FROM node:latest
RUN mkdir -p //usr/src/app
WORKDIR /usr/src/app
COPY . /usr/src/app
RUN npm install
EXPOSE 8080
EXPOSE 5858
CMD [ "npm", "start" ]
没什么复杂的。但现在我向文件夹添加了一个符号链接,它应该添加到容器中。但是,如果我尝试运行容器,我会收到一条错误消息,说明找不到文件夹。这和我添加的符号链接是一样的


是否有可能保留链接并告诉docker遵循链接并将文件复制到docker容器?

这是不可能的,也不会实现。请看一下关于以下内容的讨论:

我们不允许这样做,因为它不可重复。您计算机上的符号链接与我的计算机不同,同一Dockerfile将产生两种不同的结果。同时,将符号链接到/etc/paasswd也会导致问题,因为它会链接主机文件而不是本地文件


谢谢你的快速回复。你知道除了符号链接还有没有其他方法可以包含文件,这是docker“接受”的/读取的?你可以创建一个简单的脚本,从符号链接临时复制文件,构建docker映像,然后删除它们。遗憾的是,docker文件在构建之前需要运行单独的脚本以完全相同的方式“不可重复”,所以Docker的这个限制实际上一事无成。保证可重复性的是Git存储库,而不是Dockerfile。