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