services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_USER: arcade
      POSTGRES_PASSWORD: arcade_dev
      POSTGRES_DB: arcade
    ports: ["5432:5432"]
    volumes:
      - pgdata:/var/lib/postgresql/data
      - ./migrations:/docker-entrypoint-initdb.d:ro
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U arcade"]
      interval: 2s
      timeout: 3s
      retries: 20

  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]
    volumes:
      - redisdata:/data
    healthcheck:
      test: ["CMD", "redis-cli", "ping"]
      interval: 2s
      timeout: 3s
      retries: 20

  arcade:
    build: .
    environment:
      # On a cloned VM, point these at the core machine instead. They are the
      # only configuration a clone needs; identity and role are worked out at
      # runtime. See docs/SCALING.md.
      ARCADE_DSN: postgres://arcade:arcade_dev@postgres:5432/arcade
      ARCADE_REDIS: redis:6379
      ARCADE_ADDR: ":8080"
      # Development funding. Leave unset in any real deployment.
      ARCADE_DEV_FAUCET: "${ARCADE_DEV_FAUCET:-0}"
      ALBY_URL: http://10.30.20.43:58000
      ALBY_TOKEN: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJwZXJtaXNzaW9uIjoiZnVsbCIsImV4cCI6MjY0OTg5MDE4OH0.IpemVy-_6PgWwlGtVtHRMZlpUR179jKamAl9fpbQE_o
    ports: ["8080:8080"]
    depends_on:
      postgres: { condition: service_healthy }
      redis:    { condition: service_healthy }
    restart: unless-stopped

volumes:
  pgdata:
  redisdata:
