Ctrl K
ComunidadGuías…

docker-compose.yml

Rama main · réplica de lectura del repositorio original.

Archivo original ↗Preguntar a KiBot
services:
  art-curator:
    build: .
    container_name: art-curator
    ports:
      - "8000:8000"
    volumes:
      # Map the local artwork library for persistence
      - ./Artwork:/app/Artwork
      # Map the data directory for SQLite database persistence
      - ./data:/app/data
      # The container clock must be the HOUSE clock: Night & Quiet Hours and the CEC panel power
      # resolve "now" inside the container, which is otherwise UTC regardless of the host's timezone
      # (found 2026-09-20 — the schedule would have fired hours off). A bind of the host's zone file
      # is the standard fix and needs no config. Note: it is resolved at container start, so after
      # `timedatectl set-timezone` restart the stack (or reboot).
      - /etc/localtime:/etc/localtime:ro
    env_file:
      # Optional: pre-seed env vars (e.g. a default GEMINI_API_KEY). The app runs fine
      # without it — configure the AI model in-app via Admin → Settings → AI Engine.
      # required:false lets a fresh clone `docker compose up` with no .env (Compose >= v2.24).
      - path: .env
        required: false
    restart: unless-stopped

  # Optional HTTPS reverse proxy. Off by default; enable with:
  #   docker compose --profile tls up -d
  # The app keeps serving plain http://:8000 for kiosks/displays; Caddy adds https on 443.
  caddy:
    image: caddy:2
    container_name: sd-caddy
    profiles: ["tls"]
    restart: unless-stopped
    ports:
      - "80:80"
      - "443:443"
    environment:
      # The hostname you'll open in a browser. Default localhost; set a real domain for
      # auto Let's Encrypt (and remove `tls internal` in deploy/tls/Caddyfile).
      - SD_TLS_HOST=${SD_TLS_HOST:-localhost}
    volumes:
      - ./deploy/tls/Caddyfile:/etc/caddy/Caddyfile:ro
      - caddy_data:/data
      - caddy_config:/config
    depends_on:
      - art-curator

volumes:
  caddy_data:
  caddy_config: