# Geo-Dienste (OSRM + Nominatim) auf Österreich-OSM-Extrakt.
# Zusammen mit der Basis verwenden:
#   docker compose -f docker-compose.yml -f docker-compose.geo.yml up -d osrm nominatim
#
# WICHTIG: Vor dem ersten Start das OSRM-Preprocessing laufen lassen
# (scripts/prepare-osm-data.sh bzw. `make -C infra/geo data`) und den
# Nominatim-Import einplanen (Stunden, mehrere GB RAM/Disk).

services:
  osrm:
    build:
      context: .
      dockerfile: docker/osrm/Dockerfile
    command: osrm-routed --algorithm mld /data/austria-latest.osrm
    volumes:
      - osrm-data:/data
    networks:
      - geo-internal
    expose:
      - "5000"
    healthcheck:
      # /table mit zwei nahen NÖ-Punkten; erwartet HTTP 200.
      test:
        - CMD-SHELL
        - >-
          wget -q -O - 'http://localhost:5000/table/v1/driving/15.6229,48.2079;16.3738,48.2082?sources=0'
          | grep -q '"code":"Ok"'
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 60s
    restart: unless-stopped

  nominatim:
    image: mediagis/nominatim:4.4
    environment:
      # Österreich-Extrakt (Geofabrik). Beim Erststart wird importiert.
      PBF_URL: https://download.geofabrik.de/europe/austria-latest.osm.pbf
      REPLICATION_URL: https://download.geofabrik.de/europe/austria-updates/
      IMPORT_STYLE: address
      NOMINATIM_PASSWORD: nominatim
    volumes:
      - nominatim-data:/var/lib/postgresql/14/main
    shm_size: 1g
    networks:
      - geo-internal
    expose:
      - "8080"
    healthcheck:
      test:
        - CMD-SHELL
        - "wget -q -O - 'http://localhost:8080/status' | grep -q OK"
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 120s
    restart: unless-stopped

volumes:
  osrm-data:
  nominatim-data:

networks:
  # Internes Netz: Geo-Dienste sind nur für die App erreichbar, nicht öffentlich.
  geo-internal:
    internal: true
