# docker/portainer-stack.yml — Portainer stack for the SQLite/server build. # Deploys the prebuilt image from the local registry (built + pushed by Jenkins). # Paste into Portainer's web editor (Stacks -> Add stack -> Web editor). # # TLS is terminated by the external nginx, which should reverse_proxy to # http://:8080 (and pass the WebSocket upgrade headers for /ws). services: app: image: thinkserver:5000/ttrpg-tracker-sqlite:latest container_name: ttrpg-tracker ports: - "8080:80" # host:container — nginx upstream is :8080 volumes: - app-data:/data # SQLite DB lives here; back this up environment: - DB_PATH=/data/tracker.sqlite - PORT=4001 # node backend port (internal; caddy proxies to it) restart: unless-stopped healthcheck: test: ["CMD", "wget", "-qO-", "http://localhost:80/"] interval: 30s timeout: 5s retries: 3 start_period: 10s volumes: app-data: