services: postgres: image: postgres:16-alpine container_name: copykar_postgres restart: unless-stopped environment: POSTGRES_USER: ${POSTGRES_USER:-postgres} POSTGRES_PASSWORD: ${POSTGRES_PASSWORD:-postgres} POSTGRES_DB: ${POSTGRES_DB:-copykar} ports: - "5432:5432" volumes: - postgres_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${POSTGRES_USER:-postgres} -d ${POSTGRES_DB:-copykar}"] interval: 5s timeout: 5s retries: 5 copykar: image: copykar:latest build: context: . dockerfile: Dockerfile container_name: copykar_app restart: unless-stopped depends_on: postgres: condition: service_healthy ports: - "8000:8000" env_file: - .env volumes: - copykar_data:/app/data - copykar_sessions:/app/sessions prometheus: build: context: ./monitoring/prometheus container_name: copykar_prometheus restart: unless-stopped volumes: - prometheus_data:/prometheus ports: - "9090:9090" grafana: build: context: ./monitoring/grafana container_name: copykar_grafana restart: unless-stopped environment: - GF_SECURITY_ADMIN_USER=${GRAFANA_USER:-admin} - GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD:-admin} - GF_USERS_ALLOW_SIGN_UP=false ports: - "3000:3000" volumes: - grafana_data:/var/lib/grafana depends_on: - prometheus volumes: postgres_data: prometheus_data: grafana_data: copykar_data: copykar_sessions: