«Нет такого файла или каталога» что не так в этом Dockerfile?

#docker #dockerfile #docker-build

#docker #dockerfile #докер-сборка

Вопрос:

Я играю с Dockerfile, и у меня есть это:

 ARG PUID=1000
ARG PGID=1000
RUN groupadd -g $PGID docker-user amp;amp; 
    useradd -u $PUID -g docker-user -m docker-user amp;amp; 
    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. где находится Dockerfile?

2. @Federkun это команда, которую я запускаю для создания образа docker build -t reypm/workspace -f ./workspace/Dockerfile . другими словами: я нахожусь в корневой папке, пока Dockerfile workspace

Ответ №1:

В документации это рассматривается с помощью:

По умолчанию команда сборки docker будет искать a Dockerfile в корне контекста сборки. Параметр -f , --file , позволяет указать путь к альтернативному файлу для использования вместо него. Это полезно в тех случаях, когда один и тот же набор файлов используется для нескольких сборок. Путь должен быть к файлу в контексте сборки. Если указан относительный путь, то он интерпретируется как относительный к корню контекста.

В этом случае я думаю, что

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

Комментарии:

1. Да, это сработало, добавление workspace в начале пути выполнило задание