【问题标题】:"No such file or directory" what's wrong in this Dockerfile?“没有这样的文件或目录”这个 Dockerfile 有什么问题?
【发布时间】:2017-02-14 03:52:50
【问题描述】:

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

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

【问题讨论】:

  • Dockerfile 在哪里?
  • @Federkun 这是我正在运行以构建图像docker build -t reypm/workspace -f ./workspace/Dockerfile . 的命令,换句话说:我在根文件夹中,而Dockerfile 在workspace

标签: docker dockerfile docker-build


【解决方案1】:

documentation 解决了这个问题:

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

在这种情况下我认为是

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

【讨论】:

  • 是的,那行得通,在路径的开头添加 workspace 就可以了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-11
  • 2020-02-08
  • 1970-01-01
  • 1970-01-01
  • 2018-03-01
  • 2020-11-07
  • 1970-01-01
相关资源
最近更新 更多