services:
  postgres:
    image: postgres:16-alpine
    environment:
      POSTGRES_DB: groombook
      POSTGRES_USER: groombook
      POSTGRES_PASSWORD: groombook
    ports:
      - "5432:5432"
    volumes:
      - postgres_data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U groombook"]
      interval: 5s
      timeout: 5s
      retries: 5

  migrate:
    build:
      context: .
      dockerfile: apps/api/Dockerfile
      target: migrate
    environment:
      DATABASE_URL: postgres://groombook:groombook@postgres:5432/groombook
    depends_on:
      postgres:
        condition: service_healthy
    restart: "no"

  api:
    build:
      context: .
      dockerfile: apps/api/Dockerfile
    ports:
      - "3000:3000"
    environment:
      DATABASE_URL: postgres://groombook:groombook@postgres:5432/groombook
      AUTH_DISABLED: "true"
      CORS_ORIGIN: http://localhost:8080
      PORT: "3000"
    depends_on:
      postgres:
        condition: service_healthy
      migrate:
        condition: service_completed_successfully

  web:
    build:
      context: .
      dockerfile: apps/web/Dockerfile
    ports:
      - "8080:80"
    depends_on:
      - api

volumes:
  postgres_data:
