infra-docker

Docker инфраструктура: multi-stage builds, docker-compose

Code
Source: magicreek
Stack:
DockerDocker Compose

Specification

infra-docker

Назначение

Docker-шаблоны для развёртывания проектов: multi-stage builds, docker-compose с PostgreSQL, миграции, воркеры.

Контракты

Dockerfile.nextjs (multi-stage)

4 стадии:

**base** — node:20-alpine
**deps** — npm ci (только package.json/lock)
**builder** — prisma generate + npm run build
**runner** — standalone output, непривилегированный пользователь, PORT 3000
**worker** (опционально) — отдельный target для фоновых задач из того же image

Dockerfile.python

Однослойный: python:3.12-slim → pip install → копия src/ → CMD python -m src.bot

docker-compose.yml

Стандартный набор сервисов:

СервисОписаниеЗависимости

|--------|----------|-------------|

postgresPostgreSQL 16-alpine, healthcheck pg_isready
platformNext.js app, PORT 3000platform-migrate (completed)
workerФоновые задачи (тот же image, другой entrypoint)platform-migrate (completed)
tg-botPython ботplatform (started)

Общие volumes: `pgdata` (PostgreSQL), `media` (медиа-файлы).

Конфигурация (env)

ПеременнаяОписание

|-----------|----------|

POSTGRES_PASSWORDПароль PostgreSQL
INTERNAL_API_KEYКлюч для межсервисного взаимодействия
JWT_SECRETСекрет JWT

Реализации

СтекПутьИсточникСтатус

|------|------|----------|--------|

Docker + Composetemplates/magicreekпроверен

Адаптация

**Имя БД** — заменить magicreek на имя проекта в POSTGRES_DB и DATABASE_URL.
**Порты** — изменить 3000 / 5432 при конфликтах.
**Сервисы** — добавить/убрать сервисы (бот, воркер) в compose.
**Volumes** — добавить свои volumes (uploads, cache и т.д.).
**ENV** — добавить переменные для AI, SMS и других интеграций.