“没有这样的文件或目录”这个Dockerfile有什么问题?

我正在玩Dockerfile,我有这个:

ARG PUID=1000 ARG PGID=1000 RUN groupadd -g $PGID docker-user && \ useradd -u $PUID -g docker-user -m docker-user && \ mkdir /home/docker-user/.composer COPY container-files/home/docker-user/.composer/composer.json /home/docker-user/.composer RUN chown -R docker-user:docker-user /home/docker-user/.composer USER docker-user RUN composer global install 

但是当我尝试构build图像时,它以下面的错误结束:

 Step 6 : COPY container-files/home/docker-user/.composer/composer.json /home/docker-user/.composer lstat container-files/home/docker-user/.composer/composer.json: no such file or directory 

根据此输出,该文件在主机上存在:

 $ ls -la workspace/container-files/home/docker-user/.composer/ total 12 drwxrwxr-x 2 rperez rperez 4096 Oct 5 11:34 . drwxrwxr-x 3 rperez rperez 4096 Oct 5 11:14 .. -rw-rw-r-- 1 rperez rperez 208 Oct 5 11:20 composer.json 

我也试过这个语法:

 COPY container-files / 

但也没有工作。 所以我应该问:怎么了? 为什么这样一次又一次地失败? 我在这里错过了什么?

该文档解决这个问题:

默认情况下, Dockerfile build命令将在构build上下文的根目录中查找Dockerfile 。 使用-f ,–file选项可以指定替代文件的path。 这在多个版本使用同一组文件的情况下很有用。 path必须是在构build上下文内的文件。 如果指定了相对path,则将其解释为相对于上下文的根。

在这种情况下,我认为是

 COPY workspace/container-files/home/docker-user/.composer/composer.json /home/docker-user/.composer