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

时间:2016-10-05 15:43:21

标签: docker dockerfile docker-build

我正在玩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

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

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 /

但也没有用。所以我应该问:出了什么问题?为什么一次又一次失败?我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

documentation通过以下方式解决了这个问题:

  

默认情况下,docker build命令将在Dockerfile处查找   构建上下文的根。 -f--file选项可让您   指定要使用的备用文件的路径。这很有用   在同一组文件用于多个构建的情况下。该   path必须是构建上下文中的文件。 如果指定了相对路径,则将其解释为相对于上下文的根。

在这种情况下,我认为是

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