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