Docker-compose видит переменные окружения только в определённой директории, как решить?

Когда 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, но не будет загружать другие переменные окружения из среды разработки.