📝 Docker

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

0
Автор
04e5cc8b-58ac-4bdc-bdee-661bbb
📅
Опубликовано
08.05.2026
⏱️
Время чтения
1 мин
👁️
Просмотров
51
🌱
Уровень
Начальный
🐦 💼 ✈️

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)

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

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

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

🔗 Похожие

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

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

📝

Anthropic SDK: первые шаги с Claude API

Anthropic Python SDK — официальная библиотека для работы с Claude. Она скрывает сложность HTTP-запросов, добавляет...

📅 04.06.2026 👁️ 18
📝

Слои и кэширование в Docker

Каждая инструкция в Dockerfile создаёт слой — промежуточный образ. Docker кэширует слои и переиспользует их...

📅 08.05.2026 👁️ 63
📝

Docker Hub — хранилище образов

Docker Hub — публичный реестр Docker образов. Как npm для Node.js или PyPI для Python,...

📅 08.05.2026 👁️ 50

Понравилась статья?

Подпишитесь на наши обновления и получайте новые статьи первыми. Развивайтесь вместе с PyLand!