Что такое Docker Compose?

Введение

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

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Сайт создал Романенко Артем