services:
  # Bindestrek, IKKE understrek: MinIO validerer Host-headeren strengt og
  # avviser understrek som ugyldig vertsnavn (funnet under scratch-
  # verifisering -- se CLAUDE.md-status).
  teecup-minio:
    image: minio/minio:latest
    container_name: teecup-minio
    environment:
      MINIO_ROOT_USER: ${TEECUP_MINIO_ROOT_USER}
      MINIO_ROOT_PASSWORD: ${TEECUP_MINIO_ROOT_PASSWORD}
    command: server /data --console-address ":9001"
    volumes:
      - teecup_minio_data:/data
    networks:
      - teeoff_default
    restart: unless-stopped

  teecup_api:
    build: .
    container_name: teecup_api
    environment:
      TEECUP_DB_HOST: ${TEECUP_DB_HOST}
      TEECUP_DB_PORT: ${TEECUP_DB_PORT}
      TEECUP_DB_NAME: ${TEECUP_DB_NAME}
      TEECUP_DB_USER: ${TEECUP_DB_USER}
      TEECUP_DB_PASS: ${TEECUP_DB_PASS}
      TEECUP_SESSION_SECRET: ${TEECUP_SESSION_SECRET}
      TEECUP_SMTP_SERVER: ${TEECUP_SMTP_SERVER}
      TEECUP_SMTP_PORT: ${TEECUP_SMTP_PORT}
      TEECUP_SMTP_USER: ${TEECUP_SMTP_USER}
      TEECUP_SMTP_PASS: ${TEECUP_SMTP_PASS}
      TEECUP_FROM_EMAIL: ${TEECUP_FROM_EMAIL}
      TEECUP_PUBLIC_BASE_URL: ${TEECUP_PUBLIC_BASE_URL}
      TEECUP_MINIO_ROOT_USER: ${TEECUP_MINIO_ROOT_USER}
      TEECUP_MINIO_ROOT_PASSWORD: ${TEECUP_MINIO_ROOT_PASSWORD}
      TEECUP_MINIO_BUCKET: ${TEECUP_MINIO_BUCKET}
      TEECUP_VAPID_PRIVATE_KEY: ${TEECUP_VAPID_PRIVATE_KEY}
      TEECUP_VAPID_PUBLIC_KEY: ${TEECUP_VAPID_PUBLIC_KEY}
      TEECUP_VAPID_SUBJECT: ${TEECUP_VAPID_SUBJECT}
      TEECUP_MAPBOX_SECRET_TOKEN: ${TEECUP_MAPBOX_SECRET_TOKEN}
    networks:
      - teeoff_default
    restart: unless-stopped
    depends_on:
      - teecup-minio

  teecup_frontend:
    build:
      context: ./frontend
      args:
        TEECUP_API_ORIGIN: http://teecup_api:8000
        NEXT_PUBLIC_MAPBOX_TOKEN: ${NEXT_PUBLIC_MAPBOX_TOKEN}
    container_name: teecup_frontend
    networks:
      - teeoff_default
    restart: unless-stopped
    depends_on:
      - teecup_api

  # Selvhostet Forgejo Actions-runner (ADR-059, 2026-08-10) -- kjører
  # backend-testsuiten (.forgejo/workflows/backend-tests.yml) automatisk
  # ved push. Docker-utenfor-Docker (docker_host: automount i
  # .forgejo-runner/config.yaml): jobb-containeren får docker.sock
  # bind-mountet inn, slik at scripts/run_backend_tests.sh kan opprette
  # SINE EGNE scratch-db-/testcontainere via HOST-ens docker-daemon --
  # ikke en nøstet docker-daemon inni runneren. `.runner`-fila i
  # .forgejo-runner/ er en ekte, langlevd registreringshemmelighet
  # (gitignored, ALDRI committet).
  #
  # group_add: 112 er docker-gruppens GID på DENNE verten (`stat -c %g
  # /var/run/docker.sock`) -- uten den kan ikke runner-prosessen (som
  # kjører som en ikke-root-bruker i imaget) lese sokkelen, selv når den
  # er mountet inn. Sjekk/juster GID-en om dette flyttes til en annen vert.
  teecup-forgejo-runner:
    image: code.forgejo.org/forgejo/runner:6
    container_name: teecup-forgejo-runner
    command: forgejo-runner daemon --config config.yaml
    working_dir: /data
    group_add:
      - "112"
    volumes:
      - ./.forgejo-runner:/data
      - /var/run/docker.sock:/var/run/docker.sock
    restart: unless-stopped

volumes:
  teecup_minio_data:

networks:
  teeoff_default:
    external: true
