Добавить docker-compose инфраструктуры разработки (dev/)
PostgreSQL 16, NATS 2.10 без JetStream, MinIO и minio-init с бакетом arm-ka; имя проекта arm-ka, порты и учётные данные из .env, версии образов зафиксированы. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
parent
a22a9c3100
commit
4de51361a3
39
dev/.env.example
Normal file
39
dev/.env.example
Normal file
@ -0,0 +1,39 @@
|
||||
# Локальное окружение разработки. Скопируйте в .env: cp .env.example .env (.env в git не попадает)
|
||||
# Файл читают docker compose (из этого каталога) и, блоком ниже, сервисы при запуске из venv.
|
||||
|
||||
# --- Переменные docker-compose: учётные данные, порты хоста, бакет ---
|
||||
# PostgreSQL 16 (схема dkb создаётся миграциями arm-core, не compose)
|
||||
POSTGRES_DB=armka
|
||||
POSTGRES_USER=armka
|
||||
POSTGRES_PASSWORD=armka
|
||||
POSTGRES_PORT=5432
|
||||
|
||||
# NATS 2.10 без JetStream: клиентский порт и порт мониторинга (/varz, /healthz)
|
||||
NATS_PORT=4222
|
||||
NATS_MONITOR_PORT=8222
|
||||
|
||||
# MinIO: учётная запись администратора, порты API и консоли, единственный бакет
|
||||
MINIO_ROOT_USER=minioadmin
|
||||
MINIO_ROOT_PASSWORD=minioadmin
|
||||
MINIO_API_PORT=9000
|
||||
MINIO_CONSOLE_PORT=9001
|
||||
MINIO_BUCKET=arm-ka
|
||||
|
||||
# --- Настройки сервисов при запуске из venv против compose по localhost (формат шаблона команды) ---
|
||||
# Значения согласованы с блоком выше: при смене порта/пароля/бакета меняйте обе части.
|
||||
# Если порт хоста изменён, поправьте и порты ниже.
|
||||
DEBUG=true
|
||||
|
||||
# PostgreSQL (драйвер asyncpg)
|
||||
OPENBAO__DATABASE__DATABASE_URL=postgresql+asyncpg://armka:armka@localhost:5432/armka
|
||||
|
||||
# MinIO: адрес без схемы (host:port) — так ждёт miniopy-async
|
||||
OPENBAO__MINIO__MINIO_URL=localhost:9000
|
||||
OPENBAO__MINIO__MINIO_ADMIN_LOGIN=minioadmin
|
||||
OPENBAO__MINIO__MINIO_ADMIN_PASSWORD=minioadmin
|
||||
OPENBAO__MINIO__MINIO_BUCKET=arm-ka
|
||||
|
||||
# NATS без JetStream; пустые NATS_SEED/NATS_JWT — подключение без nkeys
|
||||
OPENBAO__NATS__NATS_URL=nats://localhost:4222
|
||||
OPENBAO__NATS__NATS_SEED=
|
||||
OPENBAO__NATS__NATS_JWT=
|
||||
83
dev/docker-compose.yml
Normal file
83
dev/docker-compose.yml
Normal file
@ -0,0 +1,83 @@
|
||||
# Инфраструктура разработки АРМ КА: PostgreSQL 16, NATS 2.10 (без JetStream, как на платформе), MinIO + бакет.
|
||||
# Запуск: cp .env.example .env && docker compose up -d (из этого каталога)
|
||||
# Ожидание готовности: docker compose up -d --wait postgres nats minio. Голый `up -d --wait` возвращает код 1, потому что
|
||||
# одноразовый minio-init завершается (хотя и с кодом 0) — для скриптов указывайте сервисы явно.
|
||||
# Все учётные данные, порты хоста и имя бакета берутся из .env (значения по умолчанию — dev).
|
||||
# Профиль `services` (arm-core, tabular-parser, scan-gateway, scan-emulator) добавляется в фазе 2.
|
||||
|
||||
# Фиксированное имя проекта: одинаковые тома и сети из любого worktree (.wt/<срез>/docs/dev).
|
||||
name: arm-ka
|
||||
|
||||
services:
|
||||
postgres:
|
||||
image: postgres:16.10-alpine
|
||||
environment:
|
||||
POSTGRES_DB: ${POSTGRES_DB:-armka}
|
||||
POSTGRES_USER: ${POSTGRES_USER:-armka}
|
||||
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-armka}
|
||||
ports:
|
||||
- "${POSTGRES_PORT:-5432}:5432"
|
||||
volumes:
|
||||
- postgres-data:/var/lib/postgresql/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
|
||||
interval: 3s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
start_period: 5s
|
||||
|
||||
# Core NATS без JetStream: флаг --jetstream не передаётся. Мониторинг — порт 8222 (/varz, /healthz).
|
||||
nats:
|
||||
image: nats:2.10.29-alpine
|
||||
command: ["-m", "8222"]
|
||||
ports:
|
||||
- "${NATS_PORT:-4222}:4222"
|
||||
- "${NATS_MONITOR_PORT:-8222}:8222"
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:8222/healthz || exit 1"]
|
||||
interval: 3s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
start_period: 2s
|
||||
|
||||
# Образы minio/minio и minio/mc сняты с Docker Hub и quay.io; используется сборка alpine/minio с RELEASE-тегом.
|
||||
minio:
|
||||
image: alpine/minio:RELEASE.2025-10-15T17-29-55Z
|
||||
# Образ по умолчанию работает от пользователя minio и не может писать в свежий именованный том — в dev запускаем от root.
|
||||
user: "0:0"
|
||||
command: ["server", "/data", "--console-address", ":9001"]
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
|
||||
ports:
|
||||
- "${MINIO_API_PORT:-9000}:9000"
|
||||
- "${MINIO_CONSOLE_PORT:-9001}:9001"
|
||||
volumes:
|
||||
- minio-data:/data
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -q --spider http://127.0.0.1:9000/minio/health/live || exit 1"]
|
||||
interval: 3s
|
||||
timeout: 3s
|
||||
retries: 20
|
||||
start_period: 3s
|
||||
|
||||
# Одноразовое создание бакета; идемпотентно (--ignore-existing), при повторном up снова завершается с кодом 0.
|
||||
minio-init:
|
||||
image: bitnamilegacy/minio-client:2025.7.21
|
||||
depends_on:
|
||||
minio:
|
||||
condition: service_healthy
|
||||
restart: "no"
|
||||
environment:
|
||||
MINIO_ROOT_USER: ${MINIO_ROOT_USER:-minioadmin}
|
||||
MINIO_ROOT_PASSWORD: ${MINIO_ROOT_PASSWORD:-minioadmin}
|
||||
MINIO_BUCKET: ${MINIO_BUCKET:-arm-ka}
|
||||
entrypoint: ["/bin/sh", "-c"]
|
||||
command:
|
||||
- >-
|
||||
mc alias set local http://minio:9000 "$$MINIO_ROOT_USER" "$$MINIO_ROOT_PASSWORD" &&
|
||||
mc mb --ignore-existing "local/$$MINIO_BUCKET"
|
||||
|
||||
volumes:
|
||||
postgres-data:
|
||||
minio-data:
|
||||
Loading…
x
Reference in New Issue
Block a user