/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 ..
context — это родительский путь, поскольку файлы Dockerfile COPY из родительского пути.


Используйте dockerfile: web/Dockerfile
dockerfile указывает альтернативный файл для сборки. Поскольку вы используете контекст в качестве .., демон docker будет использовать .. в качестве контекста сборки, а файл Dockerfile будет использовать /path/web в качестве корня для ссылок на пути к файлам с файлом Docker в /path/web/Dockerfile в качестве альтернативного файла Dockerfile.
Но -f Dockerfile работает в командной строке. Есть разница?
Это не должно было сработать. Вероятно, ранее кэшированная сборка приводит к пропуску шагов сборки. Для проверки удалите изображение, затем попробуйте снова запустить docker build. В документации COPY указано, что путь <src> должен находиться внутри контекста сборки, поэтому, если контекст правильный, ссылочные пути будут относиться к контексту.
Проверьте контекстный путь. Изменить с
..на.