services: frontend: build: ./frontend restart: unless-stopped depends_on: backend: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:80"] interval: 30s timeout: 10s retries: 3 start_period: 10s backend: build: ./backend restart: unless-stopped env_file: .env environment: - BASE_URL=${BASE_URL:-http://localhost} depends_on: fitness-db: condition: service_healthy healthcheck: test: ["CMD", "curl", "-f", "http://localhost:8000/api/health"] interval: 10s timeout: 5s retries: 10 start_period: 30s mcp-connector: build: ./mcp-connector restart: unless-stopped environment: - FITNESS_API_URL=http://backend:8000 depends_on: backend: condition: service_healthy ports: - "3001:3001" fitness-db: image: postgres:16-alpine restart: unless-stopped environment: - POSTGRES_USER=${DB_USER:-fitness} - POSTGRES_DB=${DB_NAME:-fitness_rewards} - POSTGRES_HOST_AUTH_METHOD=trust volumes: - fitness_db_data:/var/lib/postgresql/data healthcheck: test: ["CMD-SHELL", "pg_isready -U ${DB_USER:-fitness}"] interval: 5s timeout: 5s retries: 5 volumes: fitness_db_data: