Docker 18.06.2026 10 просмотров

Docker Compose .env: переменные окружения — полный гайд

#docker #docker-compose #devops #env
Docker Compose .env: переменные окружения — полный гайд
Как работать с переменными окружения в Docker Compose: .env файл, env_file, подстановка переменных.

Хранить пароли прямо в docker-compose.yml — плохая практика. Правильный способ — docker compose env через файл .env или директиву env_file.

Как работает .env файл в Docker Compose

Docker Compose автоматически читает .env из текущей директории. Переменные подставляются через ${VARIABLE}:

# .env файл
POSTGRES_PASSWORD=supersecret
N8N_ENCRYPTION_KEY=myrandomkey32chars
DOMAIN=example.com
# docker-compose.yml
services:
  postgres:
    environment:
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
  n8n:
    environment:
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      WEBHOOK_URL: https://${DOMAIN}/

docker compose version: какую указывать

Docker compose version — версия формата файла (не программы). Рекомендуется "3.8" или не указывать вовсе (Docker Compose v2 определит автоматически).

Передача переменных в docker compose container

Иногда нужно передать переменную из окружения хоста в docker compose container:

export MY_SECRET=value123
services:
  app:
    environment:
      - MY_SECRET    # без = берётся с хоста

Приоритет переменных

  1. docker compose run -e VAR=value
  2. Секция environment: в docker-compose.yml
  3. Файл .env в директории
  4. Переменные окружения shell
  5. Значения по умолчанию ${VAR:-default}

Безопасность

  • ❌ Не коммитить .env в git — добавьте в .gitignore
  • ✅ Для разных окружений: docker compose --env-file .env.prod up -d

ubuntu install docker compose

Ubuntu install docker compose:

sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
docker compose version

Подробнее — в статье Docker Compose: полный гайд.

Полезные материалы по теме