我正在玩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 /
但也没有用。所以我应该问:出了什么问题?为什么一次又一次失败?我在这里缺少什么?
答案 0 :(得分:1)
documentation通过以下方式解决了这个问题:
默认情况下,docker build命令将在
Dockerfile
处查找 构建上下文的根。-f
,--file
选项可让您 指定要使用的备用文件的路径。这很有用 在同一组文件用于多个构建的情况下。该 path必须是构建上下文中的文件。 如果指定了相对路径,则将其解释为相对于上下文的根。
在这种情况下,我认为是
COPY workspace/container-files/home/docker-user/.composer/composer.json /home/docker-user/.composer