version: '3.8'

services:
  # ===================================================================
  # HỆ 1: mirror db osm
  # ===================================================================
  db_psgsnapshot:
    image: postgis/postgis:15-3.3
    shm_size: "1gb"
    container_name: db_psgsnapshot
    environment:
      - POSTGRES_USER=admin
      - POSTGRES_PASSWORD=secret_apidb_pass
      - POSTGRES_DB=osm_apidb
    volumes:
      - db_psgsnapshot:/var/lib/postgresql/data
    ports:
      - "54322:5432"
    deploy:
      resources:
        limits:
          memory: 8G # Dữ liệu thô rất nhẹ, chỉ cần 2GB RAM
    networks:
      - gis_network
    
    # 3. Máy chủ Vector Tile Martin (Bản đồ nền)
  martin:
    image: ghcr.io/maplibre/martin:1.14.0
    container_name: gis_martin

    command:
      - "postgres://admin:secret_apidb_pass@db_psgsnapshot:5432/osm_apidb"

    ports:
      - "3000:3000"

    restart: unless-stopped

    depends_on:
      - db_psgsnapshot

    networks:
    - gis_network


  osrm:
    image: ghcr.io/project-osrm/osrm-backend
    container_name: gis_osrm

    command:
      - osrm-routed
      - --algorithm
      - mld
      - /data/hanoi-latest.osrm

    volumes:
      - ./osrm-data:/data:ro

    ports:
      - "5000:5000"

    restart: unless-stopped

    networks:
      - gis_network

networks:
  gis_network:
    driver: bridge
volumes:
  db_psgsnapshot:
    driver: local

