services:
  rote-backend:
    image: rabithua/rote-backend:${IMAGE_TAG:-latest}
    pull_policy: always
    environment:
      POSTGRESQL_URL: postgresql://rote:${POSTGRES_PASSWORD}@rote-postgres:5432/rote
    depends_on:
      rote-postgres:
        condition: service_healthy
    restart: unless-stopped
    command:
      [
        "sh",
        "-c",
        "sleep 15 && bun run dist/scripts/runMigrations.js && bun run dist/server.js",
      ]

  rote-frontend:
    image: rabithua/rote-frontend:${IMAGE_TAG:-latest}
    pull_policy: always
    depends_on:
      - rote-backend
    environment:
      # VITE_API_BASE must point to an address that reaches rote-backend (reverse-proxy domain or host IP:port)
      VITE_API_BASE: ${VITE_API_BASE}
    restart: unless-stopped

  rote-postgres:
    image: postgres:17
    restart: unless-stopped
    environment:
      POSTGRES_USER: rote
      POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
      POSTGRES_DB: rote
    volumes:
      - rote-postgres-data:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U rote -d rote"]
      interval: 5s
      timeout: 3s
      retries: 10
      start_period: 30s

volumes:
  rote-postgres-data: {}
