services:
  demo:
    restart: always
    image: photoprism/demo:latest
    container_name: demo
    depends_on:
      - traefik
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.demo.rule=Host(`demo.yourdomain.com`)"
      - "traefik.http.routers.demo.tls=true"
      - "traefik.http.routers.demo.tls.certresolver=myresolver"
    volumes:
      - "./config:/photoprism/storage/config"
    environment:
      PHOTOPRISM_DEMO: "true"
      PHOTOPRISM_PUBLIC: "true"
      PHOTOPRISM_SITE_URL: "https://demo.yourdomain.com/"
      # PHOTOPRISM_CDN_URL: "https://demo-cdn.yourdomain.com/"
      PHOTOPRISM_SITE_TITLE: "PhotoPrism"
      PHOTOPRISM_SITE_CAPTION: "Demo"
      PHOTOPRISM_SITE_DESCRIPTION: "Tags and finds pictures without getting in your way!"
      PHOTOPRISM_SITE_PREVIEW: "https://i.photoprism.app/logo?cover=17&title=Demo"
      PHOTOPRISM_SITE_AUTHOR: "PhotoPrism"
      PHOTOPRISM_HTTP_COMPRESSION: "gzip"
      PHOTOPRISM_DEFAULT_LOCALE: "en"

  traefik:
    restart: always
    image: traefik:v3.6
    container_name: traefik
    ports:
      - "80:80"
      - "443:443"
    expose:
      - "80"
      - "443"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
      - "./traefik/:/data/"
      - "./traefik.yaml:/etc/traefik/traefik.yaml"

  scheduler:
    restart: always
    image: mcuadros/ofelia:latest
    container_name: scheduler
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./jobs.ini:/etc/ofelia/config.ini"

  watchtower:
    restart: always
    image: nickfedor/watchtower
    container_name: watchtower
    environment:
      WATCHTOWER_CLEANUP: "true"
      WATCHTOWER_POLL_INTERVAL: 1800
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"