Когда Docker Compose запускает контейнеры, он создает виртуальное окружение с переменными окружения, которые могут быть использованы в контейнерах. По умолчанию, Docker Compose автоматически загружает переменные окружения из файла .env
в текущей рабочей директории. Однако, если вы хотите, чтобы Docker Compose видел переменные окружения в другой директории, вам необходимо указать путь к файлу с переменными окружения с помощью параметра env_file
в файле docker-compose.yml.
Например, предположим, что у вас есть файлы docker-compose.yml
и envs/.env
и вы хотите, чтобы Docker Compose использовал переменные окружения из файла .env
в директории envs
. Чтобы это сделать, вы должны включить следующую конфигурацию в файл docker-compose.yml
:
services: your_service: ... env_file: - ./envs/.env
Теперь Docker Compose будет загружать переменные окружения из файла .env
в директории envs
при запуске контейнеров.
Если вы хотите использовать несколько файлов с переменными окружения, вы можете указать несколько путей к файлам, разделяя их пробелами:
services: your_service: ... env_file: - ./envs/.env - ./envs/another.env
Также вы можете использовать абсолютный путь к файлу с переменными окружения:
services: your_service: ... env_file: - /path/to/your/env/file.env
Если вы хотите использовать только переменные окружения, определенные в файле .env
, без загрузки других переменных окружения из среды разработки, вы можете явно указать, что не хотите загружать системные переменные окружения, устанавливая параметр expose_systemd_env: false
в конфигурации сервиса:
services: your_service: ... expose_systemd_env: false
Теперь Docker Compose будет использовать только переменные окружения из файла .env
, но не будет загружать другие переменные окружения из среды разработки.