如何在Docker文件中使用“ADD”命令包含Docker构建上下文之外的文件?
从Docker文档中:
路径必须位于生成的上下文中;您不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程。
我不想重组我的整个项目,只是为了在这件事上适应Docker。我想将所有Docker文件保存在同一个子目录中。
此外,Docker似乎还不支持符号链接:Dockerfile ADD命令不支持主机#1676上的符号链接。
我唯一能想到的另一件事是包含一个预构建步骤,将文件复制到Docker构建上下文中(并配置我的版本控制以忽略这些文件)。还有比这更好的解决方法吗?
我个人对一些答案感到困惑,所以决定简单地解释一下。
当想要创建图像。
我总是选择项目的根作为Dockerfile中的上下文。
例如,如果您使用COPY命令,如COPY。
第一个点(.)是上下文,第二个点(。)是容器工作目录
假设上下文是项目根、点(.),代码结构如下
sample-project/
docker/
Dockerfile
如果要构建映像
您的路径(运行docker build命令的路径)是/full-path/sample-project/,你应该这样做
docker build -f docker/Dockerfile .
如果您的路径是/full-path/sampleproject/docker/,你应该这样做
docker build -f Dockerfile ../
我个人对一些答案感到困惑,所以决定简单地解释一下。
当想要创建图像。
我总是选择项目的根作为Dockerfile中的上下文。
例如,如果您使用COPY命令,如COPY。
第一个点(.)是上下文,第二个点(。)是容器工作目录
假设上下文是项目根、点(.),代码结构如下
sample-project/
docker/
Dockerfile
如果要构建映像
您的路径(运行docker build命令的路径)是/full-path/sample-project/,你应该这样做
docker build -f docker/Dockerfile .
如果您的路径是/full-path/sampleproject/docker/,你应该这样做
docker build -f Dockerfile ../