Вы не можете выйти за пределы контекста сборки (который обычно является рабочим каталогом) Docker при построении образа.
Причина довольно проста - Docker состоит из клиента командной строки и демона, когда вы вызываете docker build ...
Первое, что происходит, - ваш клиент упаковывает всю папку (контекст сборки) в один архив и отправляет ее демону вместес вашим Dockerfile
.Демон получает архив и инструкции от Dockerfile
, а это означает, что демон не обращается к вашей локальной файловой системе при построении образа и не может просматривать ../..
ссылки.
Что вам нужно дляустановите контекст сборки для вашей корневой папки и явно укажите Dockerfile
.
Ваша команда сборки будет выглядеть как
docker build -f config/docker/Dockerfile .
А внутри Dockerfile
вы должны помнить, что все пути относительнов корень проекта.
Итак, наконец, вы пришли к следующему файлу compose:
docker-compose.yml
version: '3'
services:
web:
build:
context: . # here changed
dockerfile: config/docker/Dockerfile
command: ["bash", "-c", "ls"]
expose:
- "8000"
nginx:
image: nginx
ports:
- "8000:8000"
depends_on:
- web
Вы идете в проектroot и запустить
docker-compose -f config/docker/docker-compose.yml up