Команда docker build может получить доступ только к каталогу, в котором она находится, и ниже, но не выше, если вы не укажете каталог более высокого уровня в качестве контекста.
Чтобы запустить сборку Docker из родительского каталога:
docker build -f /home/me myapp/Dockerfile
То же самое в композиторе:
#docker-compose.yml
version: '3.3'
services:
yourservice:
build:
context: /home/me
dockerfile: myapp/Dockerfile
Или с вашим примером:
version: '3'
services:
build:
context: /home/me/app
dockerfile: docker/Dockerfile
example:
volumes:
- /home/me/app:/example
Кроме того, вы должны указать полные пути, а не относительные пути. То есть.
- /home/me/myapp/files/example:/example
Если у вас есть скрипт, который генерирует Dockerfile по неизвестному пути, вы можете использовать:
CWD=`pwd`; echo $CWD
Для ссылки на текущий рабочий каталог. Оттуда вы можете добавить ..
В качестве альтернативы вы можете создать образ из каталога вверх или использовать том, которым вы можете поделиться с изображением, запущенным из более высокого каталога, или вам нужно вывести свой файл в стандартный вывод и перенаправить вывод команды в файл, который вам нужен из скрипта, который его запускает.
См. Также: Docker: добавление файла из родительского каталога