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:
|