Я работаю над проектом, в котором использую докер для создания базовой конфигурации и ее расширения. Мой базовый файл docker-compose.yml имеет links
, поэтому я не могу использовать параметр extends
в расширенном файле компоновки. Вместо этого я указываю несколько файлов docker-compose инструменту docker-compose
.
Это работает хорошо, за исключением того, что кажется, что путь к файлу .env
всегда относится к первому указанному файлу docker-compose.yml, что нарушает мою предполагаемую функциональность.
Пример:
docker-compose.yml (находится в общем месте, скажем, ~/base-app
)
web:
build: .
volumes:
- .:/usr/src/app
ports:
- "80:3000"
links:
- redis
redis:
image: redis:latest
ports:
- "6379:6379"
Теперь в дочернем приложении я хотел бы указать command
и env_file
:
docker-compose.override.yml
web:
environment:
NODE_ENV: development
env_file: .env
command: node server.js
Когда я запускаю эту настройку, я бы использовал следующую команду:
docker-compose -f ~/base-app/docker-compose.yml -f docker-compose.override.yml up
Это работает хорошо, пока я не указываю env_file
. Но с указанным env_file
я получу ошибку вроде:
ERROR: Couldn't find env file: ~/base-app/.env
При чтении docker-compose говорится, что путь к файлу env относительно файла docker-compose при использовании флага -f
.
Я что-то пропустил, или это баг? Каким будет чистый способ использования файла .env
относительно файла переопределения docker-compose?