DevOps

Docker Compose для локальной разработки: полный рецепт

2026-07-11 · 11 мин чтения

Локальный стенд на Docker Compose экономит часы онбординга: новый разработчик поднимает проект одной командой вместо дня чтения вики. Собрал рецепт, который использую в каждом проекте — с hot-reload, дампом базы и админками.

Ключевая идея — разделить образы на «продовые» и «девовые». Девовые монтируют исходники как volume и запускают процесс в режиме watch. Продовые собираются multi-stage и не содержат ничего лишнего.

services:
  api:
    build: ./api
    volumes:
      - ./api:/app
    command: uvicorn main:app --reload --host 0.0.0.0
    depends_on:
      db:
        condition: service_healthy
  db:
    image: postgres:17
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U app"]
      interval: 5s

Дампы и сиды

Добавьте сервис migrate, который применяет миграции и заливает анонимизированный дамп прода. depends_on с condition: service_healthy гарантирует порядок запуска — больше никаких «перезапусти ещё раз, сейчас заведётся».

И не храните секреты в compose-файле: env_file плюс локальный .env, который есть в .gitignore, решают проблему раз и навсегда.

← Все статьи