version: '3.8' services: db: image: postgres:16-alpine container_name: cba-postgres restart: unless-stopped environment: POSTGRES_USER: cba_user POSTGRES_PASSWORD: cba_secure_password_2026 POSTGRES_DB: cba_ledger ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U cba_user -d cba_ledger"] interval: 5s timeout: 5s retries: 5 backend: build: context: .. dockerfile: docker/Dockerfile.backend container_name: cba-backend restart: unless-stopped depends_on: db: condition: service_healthy environment: DATABASE_URL: postgresql://cba_user:cba_secure_password_2026@db:5432/cba_ledger SECRET_KEY: cba_super_secret_production_key_2026_xyz ports: - "8000:8000" frontend: build: context: .. dockerfile: docker/Dockerfile.frontend container_name: cba-frontend restart: unless-stopped depends_on: - backend ports: - "3000:80" volumes: postgres_data: