📝 Docker

Docker Compose: многоконтейнерные приложения

P
Автор
PyLand Team
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
324
🌿
Уровень
Средний

Docker Compose — инструмент для запуска нескольких связанных контейнеров как единого приложения. Конфигурация описывается в файле docker-compose.yml.

Зачем нужен Compose

Реальное приложение — несколько сервисов: веб-сервер, база данных, кэш, очередь задач. Запускать каждый вручную через docker run с десятками флагов — неудобно. Compose описывает всё в одном файле и запускает одной командой.

Минимальный docker-compose.yml

version: "3.8"

services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
    environment:
      DATABASE_URL: postgresql://user:pass@db:5432/mydb

  db:
    image: postgres:15
    environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: mydb
    volumes:
      - postgres_data:/var/lib/postgresql/data

volumes:
  postgres_data:

Основные команды

docker compose up              # запустить все сервисы
docker compose up -d           # в фоне
docker compose up --build      # с пересборкой образов
docker compose down            # остановить и удалить контейнеры
docker compose down -v         # также удалить volumes
docker compose ps              # статус сервисов
docker compose logs            # логи всех сервисов
docker compose logs web        # логи конкретного сервиса
docker compose logs -f web     # следить за логами
docker compose exec web bash   # зайти внутрь сервиса
docker compose restart web     # перезапустить сервис
docker compose build           # пересобрать образы

Ключевые поля сервиса

services:
  web:
    image: nginx:latest        # использовать готовый образ
    build: .                   # или собрать из Dockerfile
    ports:
      - "8080:80"              # хост:контейнер
    volumes:
      - ./html:/usr/share/nginx/html  # монтировать папку
    environment:
      - DEBUG=true             # переменные окружения
    env_file:
      - .env                   # из файла
    depends_on:
      - db                     # порядок запуска
    restart: unless-stopped    # политика перезапуска
    networks:
      - backend                # своя сеть

Сети в Compose

Сервисы в одном docker-compose.yml автоматически видят друг друга по имени сервиса. Из сервиса web можно обратиться к db просто по имени: db:5432.

Переменные окружения

# Из файла .env (автоматически загружается):
POSTGRES_PASSWORD=secret

# В docker-compose.yml:
environment:
  POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}

Не коммить .env в git — добавь в .gitignore.

restart политики

  • no — не перезапускать (по умолчанию)
  • always — всегда перезапускать
  • unless-stopped — перезапускать кроме случая ручной остановки
  • on-failure — только при ошибке (ненулевой exit code)

Ваша реакция на статью

💬 Комментарии (0)

🔐 Войдите в систему, чтобы оставить комментарий
🚪 Войти
💭

Комментариев пока нет

Станьте первым, кто поделится мнением об этой статье!

🔗 Похожие

Похожие статьи

Продолжите изучение с этими материалами

📝

Dockerfile: создаём свои образы

Dockerfile — текстовый файл с инструкциями для сборки образа. Каждая инструкция — слой образа.

📅 08.05.2026 👁️ 338
📝

Что такое Docker и зачем он нужен

Docker решает одну из самых распространённых проблем в разработке: «У меня работает, а на сервере...

📅 08.05.2026 👁️ 321
📝

Multi-stage builds: уменьшаем Docker-образ

Большой образ — это медленная загрузка, больше места на диске и большая поверхность атаки. Multi-stage...

📅 30.06.2026 👁️ 318
🎓 Продолжить обучение

В каких курсах используется этот материал

Перейдите к курсу, чтобы закрепить материал на практике.

FastAPI: от первого маршрута до AI-сайта Открыть программу курса Docker: От хаоса к контейнерам Открыть программу курса