# documentation: https://maplibre.org/martin/introduction.html/
# slogan: Martin is a tile server able to generate and serve vector tiles on the fly from large PostGIS databases, PMTiles (local or remote), and MBTiles files, allowing multiple tile sources to be dynamically combined into one.
# category: backend
# tags: postgis, vector, tiles
# logo: svgs/martin.png
# port: 3000

services:
  martin:
    image: ghcr.io/maplibre/martin:v0.13.0
    environment:
      - SERVICE_URL_MARTIN_3000
      - HOST=${SERVICE_URL_MARTIN}
      - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-martin-db}
    depends_on:
      postgresql:
        condition: service_healthy
    healthcheck:
      test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1:3000"]
      interval: 5s
      timeout: 20s
      retries: 10

  postgresql:
    image: postgis/postgis:16-3.4-alpine
    platform: linux/amd64
    volumes:
      - martin-postgresql-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_USER=$SERVICE_USER_POSTGRES
      - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
      - POSTGRES_DB=${POSTGRES_DB:-martin-db}
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"]
      interval: 5s
      timeout: 20s
      retries: 10
