我有一个这样的项目目录设置:
docker和Backend是兄弟姐妹
我进入docker文件夹并输入docker build ./
理论上,基于我的Dockerfile的相关部分,我应该转到父目录并进入后端
ARG PROJECT_DIR=../Backend
WORKDIR $PROJECT_DIR
RUN cp Pipfile Pipfile.lock
但是我得到了错误:
cp: cannot stat 'Pipfile': No such file or directory
我也尝试了COPY,它也不起作用。
为什么我不能将我的Pipfile复制到Pipfile.lock?它存在于后端目录中。
答案 0 :(得分:0)
Docker是客户端(docker
)<>服务器(dockerd
,作为守护程序运行)应用程序。当您键入docker build...
时,客户端将压缩上下文(在您的示例中指定为./
)并将其发送到服务器(在大多数情况下,该服务器在同一台计算机上运行,但这实际上无关紧要)。这意味着上下文中不是的所有内容对于构建过程都是不可用的(由服务器完成)。
因此,现在您可以看到为什么“兄弟”目录中的内容不可用,它们不是上下文的一部分,也没有发送到守护程序进行构建的原因。
在此处参考更多信息:https://docs.docker.com/engine/reference/commandline/build/#extended-description
答案 1 :(得分:0)
您需要了解以下两点:
FROM
)实例化一个容器,执行在Dockerfile
上指定的更改,并从该容器的最终状态创建一个新映像。因此,要将文件放入docker映像中,请使用COPY命令。第一个参数是来自Dockerfile目录的原始文件路径。出于安全原因,无法访问外部文件。
如果您需要访问Dockerfile目录之外的文件,则可能将其放置在错误的位置。