axe/compose.yaml
2026-10-18 22:07:25 +03:00

75 lines
3.1 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Локальная база для разработки: поднимается одной командой и не зависит
# от туннеля до БД на другом сервере.
#
# 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: