解决 docker 文件中 COPY 命令中的目录路径错误

Troubleshoot directory path error in COPY command in docker file

我在 ubuntu 16.04 之上的 docker 文件中使用 COPY 命令。尽管目录存在,但我收到错误消息,因为没有这样的文件或目录。在下面的 docker 文件中,我想将工作区目录中存在的目录 "auth" 复制到 docker 图像(在路径 /home/ubuntu 处),然后构建图像。

FROM ubuntu:16.04
RUN apt-get update
COPY /home/ubuntu/authentication/workspace   /home/ubuntu
WORKDIR /home/ubuntu/auth

a Dockerfile COPY 命令只能引用上下文下的文件 - Dockerfile 的当前位置,又名 . 所以你现在有几个选择:

  1. 如果可以在构建之前将 /home/ubuntu/authentication/workspace/ 目录内容复制到项目内部的某个位置(所以现在它将包含在您的 Dockerfile 上下文中,您可以通过COPY ./path/to/content /home/ubuntu) 它可以很棒。但有时你并不想要它。

  2. 不是复制目录,而是通过卷将其绑定到您的容器:

当你 运行 容器时,添加一个 -v 选项:

docker run [....] -v /home/ubuntu/authentication/workspace:/home/ubuntu [...]

请注意,卷是这样设计的,因此您在容器目录 (/home/ubuntu) 中所做的任何更改都会影响主机端的绑定目录 (/home/ubuntu/authentication/workspace),反之亦然。

  1. 我在 here 上发现了一些东西:这个人强迫 Dockerfile 接受他的上下文——他坐在 /home/ubuntu/authentication/workspace/ 目录中,并且 运行在那里

    docker build . -f /path/to/Dockerfile

所以现在在他的 Dockerfile 中他可以引用 /home/ubuntu/authentication/workspace 作为他的上下文 (.)