
Введение
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
, самое время его написать и почувствовать себя повелителем контейнеров! 🚀