version: "3.9" services: db: image: postgres:16-alpine restart: unless-stopped environment: POSTGRES_USER: pos_user POSTGRES_PASSWORD: pos_password POSTGRES_DB: pos_db ports: - "5432:5432" volumes: - pos_db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U pos_user -d pos_db"] interval: 10s timeout: 5s retries: 5 app: build: . restart: unless-stopped depends_on: db: condition: service_healthy ports: - "8080:8080" environment: NODE_ENV: production PORT: 8080 DATABASE_URL: postgresql://pos_user:pos_password@db:5432/pos_db JWT_SECRET: ${JWT_SECRET:-change-me-in-production} LOG_LEVEL: info volumes: pos_db_data: