services: db: image: postgres:18-alpine environment: POSTGRES_DB: go_guess POSTGRES_USER: go_guess POSTGRES_PASSWORD: go_guess ports: - "${DB_PORT:-5432}:5432" volumes: - postgres_data3:/var/lib/postgresql healthcheck: test: ["CMD-SHELL", "pg_isready -U go_guess -d go_guess"] interval: 3s timeout: 3s retries: 20 rabbitmq: image: rabbitmq:4-management-alpine ports: - "${RABBITMQ_AMQP_PORT:-5672}:5672" - "${RABBITMQ_MANAGEMENT_PORT:-15672}:15672" healthcheck: test: ["CMD", "rabbitmq-diagnostics", "-q", "ping"] interval: 5s timeout: 5s retries: 20 api: build: ./backend environment: DATABASE_URL: postgres://go_guess:go_guess@db:5432/go_guess?sslmode=disable JWT_SECRET: local-development-secret-change-me-12345 FRONTEND_URL: ${FRONTEND_URL:-http://localhost:5173} APP_ENV: ${APP_ENV:-development} RABBITMQ_URL: amqp://guest:guest@rabbitmq:5672/ ports: - "${API_PORT:-8080}:8080" depends_on: db: condition: service_healthy rabbitmq: condition: service_healthy web: build: ./frontend ports: - "${WEB_PORT:-5173}:80" depends_on: - api volumes: postgres_data: postgres_data2: postgres_data3: