services: podium: build: . image: podium:latest container_name: podium restart: unless-stopped ports: # Publish one host:container port per site. The container ports must # match the "port" values in SITES below. - "8080:8080" - "8081:8081" environment: # SITES: a JSON array of sites. One container serves them all, each on # its own container port. Per-object fields: # repo (required) GitHub repo to clone and serve # port (required) container port to listen on (must be unique) # branch (default "main") # build (default "npm ci --no-audit --no-fund && npm run build"; # use "" for a raw static repo with no build step) # output (default "dist"; use "." for a raw static repo) # # For a private repo, put a token in the URL: # https://:@github.com/you/repo.git SITES: >- [ {"repo":"https://github.com/you/vite-app.git","port":8080, "branch":"main"}, {"repo":"https://github.com/you/static-site.git","port":8081, "build":"","output":"."} ] POLL_INTERVAL: "300" # seconds between update checks (applies to all sites) healthcheck: # Probes the first site's port (written to /run/podium/health-port). test: ["CMD-SHELL", "curl -fsS http://localhost:$(cat /run/podium/health-port)/healthz"] interval: 30s timeout: 5s retries: 3 start_period: 90s