如何使用Docker文件中的"ADD"命令包含Docker构建上下文之外的文件?
从Docker文档:
路径必须位于构建的上下文中; 你不能添加../something/something,因为docker构建的第一步是将上下文目录(和子目录)发送到docker守护进程.
我不想重构我的整个项目只是为了适应Docker这个问题.我想将所有Docker文件保存在同一个子目录中.
此外,似乎Docker还没有(也可能不会)支持符号链接:Dockerfile ADD命令不遵循主机#1676上的符号链接.
我能想到的唯一另一件事是包含一个预构建步骤,将文件复制到Docker构建上下文中(并配置我的版本控制以忽略这些文件).还有比这更好的解决方法吗?
在 Windows 10 (cmd) 中,我试图从名称中包含空格字符的子文件夹中复制文件。
首先我尝试使用引号:
FROM jfloff/alpine-python:2.7
COPY "Folder 1/File.txt" "Dir 1"
Run Code Online (Sandbox Code Playgroud)
错误信息:
无法处理“\”文件夹:查找匹配的双引号时意外结束语句
“JSON”格式(跳过第一行):
COPY ["Folder 1/File.txt" "Dir 1"]
Run Code Online (Sandbox Code Playgroud)
错误信息:
无法处理"[\"Folder" : 寻找匹配的双引号时意外的语句结束
试图用一个反斜杠转义:
COPY "Folder\ 1/File.txt" "Dir\ 1"
Run Code Online (Sandbox Code Playgroud)
错误信息:
无法处理"\"Folder\\" : 寻找匹配的双引号时意外结束语句
试图用双反斜杠转义:
COPY "Folder\\ 1/File.txt" "Dir\\ 1"
Run Code Online (Sandbox Code Playgroud)
错误信息:
无法处理"\"Folder\\\\" : 寻找匹配的双引号时意外结束语句
还尝试了使用%20而不是空格的建议:
COPY ["Folder%201/File.txt" "Dir%201"]
Run Code Online (Sandbox Code Playgroud)
错误信息:
复制失败:没有源文件
转义字符替换:
# escape=`
COPY "Folder` 1/File.txt" "Dir 1"
Run Code Online (Sandbox Code Playgroud)
错误信息:
无法处理“\”Folder`”:寻找匹配的双引号时意外结束语句
相同,但没有引号:
#escape=`
COPY Folder` 1/File.txt Dir` 1
Run Code Online (Sandbox Code Playgroud)
错误信息:
复制失败:stat /var/lib/docker/tmp/docker-builder082039614/ …