创建dockerfile时跟随符号链接

3

我编写了一个 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容器中?

1个回答

1
这是不可能的,也不会被实现。请查看github问题#1676上的讨论:
我们不允许这样做,因为它不可重复。你机器上的符号链接和我的机器上的不同,相同的Dockerfile会产生两个不同的结果。同时,将/etc/paasswd链接到符号链接会导致问题,因为它会链接主机文件而不是本地文件。

1
谢谢您的快速回复。您知道除了符号链接之外,是否有其他方法可以包含文件,并且这种方法被Docker“接受”/读取吗? - CordlessWool
你可以创建一个简单的脚本,从你的符号链接中复制文件,构建Docker镜像,然后将它们删除。 - Camilo Silva
6
令人遗憾的是,需要在构建之前运行单独脚本的Dockerfile也无法以完全相同的方式“重复”,因此Docker的这个限制实际上没有什么作用。确保可重复性的是Git存储库,而不是Dockerfile。 - Will Vousden
@WillVousden 我也不同意开发团队在这个问题上如此限制。话虽如此,我们基本上必须接受它,所以我制作了这个工具来帮助自动化符号链接路径列表中文件的硬链接:https://dev59.com/QlwZ5IYBdhLWcg3wFMwR#68765508 - Venryx

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接