
Введение
Docker — это круто, но если ваш проект состоит из нескольких сервисов (например, база данных, бэкенд, фронтенд и ещё что-то загадочное), управлять контейнерами вручную становится больно. Вот тут и приходит на помощь Docker Compose — инструмент, который позволяет запускать и управлять многоконтейнерными приложениями с помощью одного YAML-файла.
Представьте, что вам нужно собрать лего, но вместо того, чтобы собирать каждую деталь вручную, вы просто нажимаете кнопку — и оно само строится. Вот так и работает Docker Compose!
1. Зачем нужен Docker Compose?
Без Docker Compose:
- Запускаем каждый контейнер вручную через 
docker run .... - Необходимо связывать их между собой (база данных, приложение, кеш, API и т. д.).
 - Настройки хранятся в разных местах, и кто-то (обычно вы) забывает, где именно.
 
С Docker Compose:
- Один YAML-файл (
docker-compose.yml) управляет всей инфраструктурой. - Простая команда 
docker-compose upзапускает все сервисы. - Среда разработки легко переносится на другие машины (больше никаких «а у меня работает»).
 
2. Установка Docker Compose
Если у вас установлен Docker, скорее всего, Docker Compose уже есть. Проверить можно так:
docker-compose --version
Если команды нет, установите её, следуя официальной документации.
3. Первый проект на Docker Compose
Давайте создадим простое приложение, состоящее из Python Flask-сервиса и базы данных PostgreSQL. Без Docker Compose запускать их вместе — тот ещё квест, но мы пойдём простым путём.
3.1. Создаём docker-compose.yml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "5000:5000"
    depends_on:
      - db
  
  db:
    image: postgres:latest
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: secret
      POSTGRES_DB: mydatabase
Что тут происходит?
- Определяем два сервиса: 
web(наш Python-приложение) иdb(PostgreSQL). webстроится из текущей папки (build: .).dbиспользует официальный образ PostgreSQL.depends_onговорит, чтоwebдолжен запускаться послеdb.
3.2. Создаём Dockerfile для web
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]
3.3. Запускаем проект
docker-compose up
Теперь у нас сразу запустится база данных и приложение Flask. 🎉
4. Полезные команды Docker Compose
- Запуск проекта:
docker-compose up - Остановка проекта:
docker-compose down - Перезапуск:
docker-compose restart - Логи всех контейнеров:
docker-compose logs -f - Запуск только одного сервиса:
docker-compose up web 
5. Заключение
Docker Compose — это супергерой, который спасает программистов от хаоса с контейнерами. С его помощью можно легко управлять многоконтейнерными приложениями, а также быстро поднимать и выключать сложные инфраструктуры.
Так что, если у вас ещё нет docker-compose.yml, самое время его написать и почувствовать себя повелителем контейнеров! 🚀