← Назад к вопросам

Как запустить docker-compose?

1.7 Middle🔥 141 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Запуск Docker Compose

Docker Compose — это инструмент для определения и запуска многоконтейнерных Docker приложений. Давайте разберёмся, как его использовать на практике.

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

Запуск контейнеров в фоне:

docker compose up -d

Эта команда:

  • Читает файл docker-compose.yml
  • Создаёт необходимые сети и тома
  • Запускает контейнеры в фоновом режиме (-d флаг)

Запуск с пересборкой образов:

docker compose up -d --build

Используется, когда вы изменили Dockerfile или зависимости.

Остановка контейнеров:

docker compose down

Останавливает и удаляет контейнеры (данные в томах сохраняются).

Удаление всего (включая тома и образы):

docker compose down -v --rmi all

Структура docker-compose.yml

Вот типичный пример для Python приложения с базой данных:

version: "3.9"

services:
  web:
    build: .
    ports:
      - "8000:8000"
    environment:
      - DATABASE_URL=postgresql://user:password@db:5432/app_db
      - DEBUG=true
    depends_on:
      - db
    volumes:
      - .:/app
    command: uvicorn main:app --host 0.0.0.0

  db:
    image: postgres:15
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=password
      - POSTGRES_DB=app_db
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"

volumes:
  postgres_data:

Полезные команды

Просмотр логов контейнеров:

docker compose logs -f web  # Логи конкретного сервиса
docker compose logs -f      # Логи всех сервисов

Выполнить команду в контейнере:

docker compose exec web python manage.py migrate
docker compose exec db psql -U user -d app_db

Перестроить образ без запуска:

docker compose build

Остановить только конкретный сервис:

docker compose stop web

Best Practices

  • Используйте volumes для персистентности данных БД
  • Определяйте environment переменные через .env файл
  • Не забывайте про depends_on для правильного порядка запуска
  • Используйте health checks для контроля готовности сервисов
  • Изолируйте сети для безопасности между сервисами

Пример с .env

# .env
DATABASE_URL=postgresql://user:password@db:5432/app_db
SECRET_KEY=your-secret-key
DEBUG=false
services:
  web:
    environment:
      - DATABASE_URL=${DATABASE_URL}
      - SECRET_KEY=${SECRET_KEY}

Запуск с переменными окружения автоматически загружается из .env файла.

Как запустить docker-compose? | PrepBro