# OpenConcho web UI — one file, two Compose profiles (dev builds, prod pulls).
#
#   make up      # profile dev:  build from THIS repo + run     → http://localhost:8080
#   make prod    # profile prod: pull ghcr…:latest instead of building
#   make down    # stop + remove (either profile)
#   make clean   # down + drop the locally built image
#
# The SPA issues all Honcho calls same-origin to /api; nginx forwards each to the
# URL named in the per-request X-Honcho-Upstream header (no browser CORS). Seed the
# first instance with OPENCONCHO_DEFAULT_HONCHO_URL:
#
#   OPENCONCHO_DEFAULT_HONCHO_URL=https://honcho.example.net make up
#
# To fold into an existing Honcho Compose stack, point the seed at the api service
# (e.g. http://api:8000 — nginx resolves it on the compose network).

# Shared config (defined once); both profiles reference it via a YAML merge.
x-openconcho: &openconcho
  environment:
    # Absolute URL seeding the first instance; the browser sends it as the
    # X-Honcho-Upstream header and nginx forwards there (no browser CORS).
    OPENCONCHO_DEFAULT_HONCHO_URL: ${OPENCONCHO_DEFAULT_HONCHO_URL:-http://host.docker.internal:8000}
    # Optional SSRF guard. Unset = forward anywhere (safe for the localhost-only
    # binding below). Set comma-separated host globs before exposing the proxy:
    #   OPENCONCHO_UPSTREAM_ALLOWLIST: honcho.example.net,*.honcho.dev
    OPENCONCHO_UPSTREAM_ALLOWLIST: ${OPENCONCHO_UPSTREAM_ALLOWLIST:-}
  ports:
    - "127.0.0.1:8080:8080"
  # Lets the default host.docker.internal upstream resolve on Linux too
  # (Docker Desktop / Colima provide it automatically).
  extra_hosts:
    - "host.docker.internal:host-gateway"
  restart: unless-stopped

services:
  # Dev-forward — builds from source so you run your local changes (`make up`).
  openconcho:
    <<: *openconcho
    profiles: ["dev"]
    build: .
    image: openconcho-web:local

  # Production — pulls the published image instead of building (`make prod`).
  openconcho-prod:
    <<: *openconcho
    profiles: ["prod"]
    image: ghcr.io/offendingcommit/openconcho-web:latest
    pull_policy: always
