infra-docker
Docker инфраструктура: multi-stage builds, docker-compose
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
Стандартный набор сервисов:
| Сервис | Описание | Зависимости |
|---|
|--------|----------|-------------|
| postgres | PostgreSQL 16-alpine, healthcheck pg_isready | — |
|---|---|---|
| platform | Next.js app, PORT 3000 | platform-migrate (completed) |
| worker | Фоновые задачи (тот же image, другой entrypoint) | platform-migrate (completed) |
| tg-bot | Python бот | platform (started) |
Общие volumes: `pgdata` (PostgreSQL), `media` (медиа-файлы).
Конфигурация (env)
| Переменная | Описание |
|---|
|-----------|----------|
| POSTGRES_PASSWORD | Пароль PostgreSQL |
|---|---|
| INTERNAL_API_KEY | Ключ для межсервисного взаимодействия |
| JWT_SECRET | Секрет JWT |
Реализации
| Стек | Путь | Источник | Статус |
|---|
|------|------|----------|--------|
| Docker + Compose | templates/ | magicreek | проверен |
|---|
Адаптация
•**Имя БД** — заменить magicreek на имя проекта в POSTGRES_DB и DATABASE_URL.
•**Порты** — изменить 3000 / 5432 при конфликтах.
•**Сервисы** — добавить/убрать сервисы (бот, воркер) в compose.
•**Volumes** — добавить свои volumes (uploads, cache и т.д.).
•**ENV** — добавить переменные для AI, SMS и других интеграций.