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 и других интеграций.