Я пытаюсь получить файл, содержащий docker, работающий с несколькими .env
файлами, и мне не повезло. Я пытаюсь установить три .env
файла:
- глобальные параметры, одинаковые для всех экземпляров контейнера.
- настройки, зависящие от среды (материал только для теста или разработчика)
- локальные настройки - переопределяемые вещи, которые разработчик может потребовать изменить, если у них есть конфликты, например, с номером порта
Мой docker-compose.yml
файл выглядит следующим образом:
version: '2'
services:
db:
env_file:
- ./.env
- ./.env.${ENV}
- ./.env.local
image: postgres
ports:
- ${POSTGRES_PORT}:5432
.env
выглядит следующим образом:
POSTGRES_USER=myapp
и .env.development
выглядит следующим образом:
POSTGRES_PASSWORD=supersecretpassword
POSTGRES_HOST=localhost
POSTGRES_PORT=25432
POSTGRES_DB=myapp_development
.env.local
в этом случае не существует.
После запуска ENV=development docker-compose up
я получаю следующий вывод:
$ ENV=development docker-compose up
WARNING: The POSTGRES_PASSWORD variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_DB variable is not set. Defaulting to a blank string.
WARNING: The POSTGRES_PORT variable is not set. Defaulting to a blank string.
ERROR: The Compose file './docker-compose.yml' is invalid because:
services.db.ports is invalid: Invalid port ":5432", should be [[remote_ip:]remote_port[-remote_port]:]port[/protocol]
Из этого сообщения об ошибке выглядит, что ни одна из моих переменных среды не используется. Я просто обновился до новейшей доступной документации докеры - также - те же ошибки:
$ docker-compose --version
docker-compose version 1.8.0-rc1, build 9bf6bc6
Любые идеи здесь? Было бы неплохо иметь один docker-compose.yml
, который будет работать в нескольких средах.