axe/compose.yaml

75 lines
3.1 KiB
YAML
Raw Normal View History

2026-10-18 19:07:25 +00:00
# Локальная база для разработки: поднимается одной командой и не зависит
# от туннеля до БД на другом сервере.
#
# docker compose up -d --wait # или: make up
# docker compose down # или: make down
#
# Наружу проброшен порт 5433, а не 5432: 5432 обычно занят пробросом
# рабочей базы, и две БД должны уживаться одновременно. Для compose-базы
# в .env подставляется:
#
# DATABASE_URL=postgres://building_app:building_app@localhost:5433/building_mgmt?sslmode=disable
#
# Данные живут в томе pgdata и переживают `down`; полная зачистка —
# `docker compose down -v`.
services:
db:
image: postgres:18-alpine
container_name: building-mgmt-db
restart: unless-stopped
# Ресурсные потолки dev-базы: 512m хватает с запасом
# (shared_buffers по умолчанию 128m), больше ядра отдавать не нужно.
mem_limit: 512m
cpus: 1
environment:
POSTGRES_USER: building_app
POSTGRES_PASSWORD: building_app
POSTGRES_DB: building_mgmt
ports:
- "5433:5432"
volumes:
- pgdata:/var/lib/postgresql/data
healthcheck:
# --wait дожидается healthcheck: `up -d --wait` возвращает готовую базу
test: ["CMD-SHELL", "pg_isready -U building_app -d building_mgmt"]
interval: 5s
timeout: 5s
retries: 12
minio:
# Локальное S3 для фотоотчёта (порт 5434, консоль 5435). Образ
# собирается из официального бинарника релиза 2024-07-26 — версии
# до ухода MinIO из опенсорса: на Docker Hub minio/minio архивирован,
# pull отдан невозможен (см. deploy/minio/Dockerfile).
build:
context: deploy/minio
image: minio/minio:RELEASE.2024-07-26T20-48-21Z
container_name: building-mgmt-minio
restart: unless-stopped
# Потолки dev-сервиса: MinIO съедает меньше гигабайта даже под нагрузкой.
mem_limit: 512m
cpus: 1
command: server /data --console-address ":9001"
environment:
MINIO_ROOT_USER: minioadmin
MINIO_ROOT_PASSWORD: minioadmin
ports:
# 5434/5435 — чтобы не пересекаться с пробросами других сервисов
# (5432 занят PostgreSQL, 9000/9001 — типовые порты MinIO).
- "5434:9000"
- "5435:9001"
volumes:
- miniodata:/data
healthcheck:
# busybox wget входит в alpine: /minio/health/live отвечает 200,
# когда сервер готов принимать запросы.
test: ["CMD-SHELL", "wget -q -O /dev/null http://localhost:9000/minio/health/live || exit 1"]
interval: 5s
timeout: 5s
retries: 12
volumes:
pgdata:
miniodata: