Docker Compose

⌘K

Docker Compose

Docker Compose — это инструмент для описания и запуска многоконтейнерных приложений с помощью единого конфигурационного файла (обычно

docker-compose.yml
). Он упрощает работу с сервисами, которые зависят друг от друга, например: веб-приложение, база данных, кеш и очередь сообщений.


Основная идея

Вместо того чтобы вручную запускать каждый контейнер и связывать их сетью и томами, вы описываете всю инфраструктуру приложения в YAML-файле:

  • Сервисы (services) — отдельные контейнеры с указанием образа или
    Dockerfile
    .
  • Сети (networks) — как контейнеры будут общаться друг с другом.
  • Тома (volumes) — куда сохраняются данные.
  • Переменные окружения (environment) — настройки для каждого сервиса.
  • Порты (ports) — маппинг между хостом и контейнером.

Пример конфигурации

version: "3.9" services: app: build: . ports: - "8080:8080" environment: DB_HOST: db DB_USER: appuser depends_on: - db db: image: postgres:16-alpine environment: POSTGRES_USER: appuser POSTGRES_PASSWORD: secret POSTGRES_DB: appdb volumes: - db_data:/var/lib/postgresql/data volumes: db_data:

Ключевые возможности

  1. Быстрый запуск окружений
    docker compose up -d
    — и всё приложение поднимается за один шаг.
  2. Локальная разработка
    Легко эмулировать продакшн-среду у каждого разработчика.
  3. Версионирование конфигурации
    Файл
    docker-compose.yml
    хранится в Git, что делает конфигурацию воспроизводимой.
  4. Изоляция окружений
    Каждое окружение (dev, test, stage) может иметь свой compose-файл или override.

Практические приёмы

  • Override-файлы (
    docker-compose.override.yml
    ) — для настройки параметров в dev-режиме (маппинг исходников, hot-reload).
  • .env файл — вынос чувствительных данных и параметров окружения.
  • Профили (profiles) — запуск только нужных сервисов (
    docker compose --profile debug up
    ).
  • Мульти-stage build в связке с Compose для оптимизации образов.
  • Поддержка нескольких файлов:
    docker compose -f docker-compose.yml -f docker-compose.prod.yml up

Интеграция с другими инструментами

  • Docker Swarm — можно масштабировать сервисы на нескольких узлах с теми же конфигами.
  • CI/CD — автоматический запуск Compose-окружения для тестов.
  • Kubernetes — через утилиты типа Kompose можно конвертировать
    docker-compose.yml
    в манифесты K8s.

Безопасность и удобство

  • Не храните пароли прямо в YAML — используйте
    .env
    или секреты (
    docker secrets
    ).
  • Для production лучше разделять образы и конфиги, избегая dev-инструментов в рантайме.
  • Мониторьте версии образов и регулярно пересобирайте сервисы.

Для чего это клиенту

Compose делает инфраструктуру приложения прозрачной, воспроизводимой и управляемой. Клиент или команда разработки получают среду, которую можно поднять на любом компьютере или сервере за минуты, без «сюрпризов» в настройках. Это сокращает время на развёртывание, упрощает онбординг новых сотрудников и минимизирует человеческий фактор.

Долгосрочные клиенты — наша гордость

Для тех, кто с нами надолго: 12 месяцев = 13 с промокодом

Месяц в подарок
COPIED
NEWCOM COPIED