# ВНИМАНИЕ (2026-08-05). Порты базы и внутреннего API наружу НЕ публикуются, # секреты берутся только из .env — в этот файл их не писать. # Прежняя версия (5432 наружу + пароль postgres) привела к потере базы на ru2: # её снесли вымогатели и оставили требование выкупа. # И помните: пустой ports в override-файле НЕ отменяет порты отсюда — # списки в docker compose при слиянии складываются. services: db: image: postgres:16-alpine environment: POSTGRES_DB: family_tree POSTGRES_USER: postgres POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:?задайте в .env} volumes: - db_data:/var/lib/postgresql/data - ./db/schema.sql:/docker-entrypoint-initdb.d/01_schema.sql:ro - ./db/seed.sql:/docker-entrypoint-initdb.d/02_seed.sql:ro healthcheck: test: ["CMD-SHELL", "pg_isready -U postgres"] interval: 5s timeout: 3s retries: 10 backend: build: ./backend environment: PORT: 4000 DATABASE_URL: ${DATABASE_URL:?задайте в .env} JWT_SECRET: ${JWT_SECRET:?задайте в .env} CORS_ORIGIN: http://localhost:3000 depends_on: db: condition: service_healthy frontend: build: ./frontend depends_on: - backend ports: - "127.0.0.1:3000:80" volumes: db_data: