Docker-compose: сборке не удалось найти Dockerfile

/path/
   web/
      Dockerfile
      docker-compose.yml
   file.zip

докер-compose.yml

version: "3"
services:
  
  web:
    container_name: web
    build:
      context: ..
      dockerfile: Dockerfile
    tags:
      - "test/example1:latest"

Запускаем докер композицию:

> cd /path/web
> docker-compose up

failed to solve: rpc error: code = Unknown desc = failed to solve with frontend dockerfile.v0: failed to read dockerfile: open /var/lib/docker/tmp/buildkit-mount1535462816/Dockerfile: no such file or directory

Если создать образ напрямую из командной строки, он работает.

cd /path/web
docker build -f Dockerfile test/example1:latest ..

Проверьте контекстный путь. Изменить с .. на .

keno 21.04.2023 03:15

context — это родительский путь, поскольку файлы Dockerfile COPY из родительского пути.

eastwater 21.04.2023 03:41
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
2
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте dockerfile: web/Dockerfile

dockerfile указывает альтернативный файл для сборки. Поскольку вы используете контекст в качестве .., демон docker будет использовать .. в качестве контекста сборки, а файл Dockerfile будет использовать /path/web в качестве корня для ссылок на пути к файлам с файлом Docker в /path/web/Dockerfile в качестве альтернативного файла Dockerfile.

Но -f Dockerfile работает в командной строке. Есть разница?

eastwater 21.04.2023 20:23

Это не должно было сработать. Вероятно, ранее кэшированная сборка приводит к пропуску шагов сборки. Для проверки удалите изображение, затем попробуйте снова запустить docker build. В документации COPY указано, что путь <src> должен находиться внутри контекста сборки, поэтому, если контекст правильный, ссылочные пути будут относиться к контексту.

keno 21.04.2023 21:04

Другие вопросы по теме

Лучший способ предоставить переменные env (секреты) для создания докеров, которые запускают контейнеры в группе автоматического масштабирования EC2
Prefect) sqlite3.OperationalError: table worker_pool уже существует. Ошибка при создании контейнера докеров с использованием образа prefecthq/prefect
Префект) Не удается подключиться к серверному API по адресу http://0.0.0.0:4200/api в контейнере докеров
«Не удалось перевести имя хоста« postgres »в адрес: имя или служба не известны» с Postgres в docker-compose
Исключение при обновлении SonarQube с 8.2 до 9.9 LTS
Docker compose: дополнительное свойство dockerfile_inline не разрешено
Понимание изменений тома, подключенного к хосту, в Docker
Проблема запуска WSL2 DDEV (ответ ошибки от демона: порты недоступны)
Как сделать набор реплик MongoDB 6 с одним узлом с компоновкой Docker?
Приложения Docker Compose автоматически привязываются к одному и тому же порту, но компоновка не запускается