Docker Compose: dev-окружение «как на проде»

Docker Compose: dev-окружение «как на проде»

«У меня локально работает» лечится паритетом: те же major-версии Postgres, Redis, reverse proxy что на staging.

Docker Compose: dev-окружение «как на проде»
Иллюстрация к материалу

Состав stack

  • app (backend), web (nuxt), db, redis, caddy/nginx
  • Один .env в корне монорепо

Volumes

Named volume для PG data; bind mount только для hot-reload кода.

Seed data

Идемпотентные migrations + optional seed SQL для demo.

Docker Compose: dev-окружение «как на проде»
Схема и рабочий процесс

Чеклист

  • docker compose up поднимает всё за 1 команду
  • README с портами
  • Healthchecks в compose

Паритет с prod

  • Major версии Postgres/Redis совпадают со staging
  • Тот же reverse proxy path (/api strip) что на Caddy
  • Seed-данные покрывают happy path оплаты и auth

Onboarding за один день

README: clone → copy .env.example → docker compose up → migrate → open localhost. Скрипт `make dev` или npm script с health wait снимает большинство вопросов при первом запуске.

Типовой compose для fullstack

Сервисы: db (Postgres 16), redis, backend (Nest hot-reload), frontend (Nuxt dev), caddy с тем же path routing что prod. Переменные — один .env.example без секретов интеграций; Telegram/SMTP подставляются через admin после первого seed.

Healthcheck на db: `pg_isready`; backend ждёт db через depends_on condition. Новый разработчик: git clone, cp .env.example .env, docker compose up — через 3–5 минут localhost открыт с seed admin.

Для отладки webhook PSP используйте ngrok или cloudflared tunnel в compose override — не меняйте prod callback URL ради локальной разработки.

Чеклист «поднял за час»

  • README: clone, cp .env.example, docker compose up, migrate
  • Порты и URL в таблице на одной странице
  • Healthcheck на db и app
  • Seed покрывает login и один happy-path (оплата, форма)