Documentation Index
Fetch the complete documentation index at: https://docs.slipway.sh/llms.txt
Use this file to discover all available pages before exploring further.
Static site or single-binary web app
version: 1
services:
web:
build:
context: .
ports:
- { port: 3000, public: true }
env:
NODE_ENV: production
resources:
cpu: "500m"
memory: "512Mi"
healthcheck:
readiness: { http: { path: /api/health, port: 3000 } }
Web + worker (no public port for the worker)
version: 1
services:
web:
build:
context: .
ports:
- { port: 3000, public: true }
env:
LOG_LEVEL: ${var.LOG_LEVEL}
DATABASE_URL: ${secret.DATABASE_URL}
REDIS_URL: ${secret.REDIS_URL}
resources: { cpu: "500m", memory: "512Mi" }
healthcheck:
readiness: { http: { path: /healthz, port: 3000 } }
worker:
image: ghcr.io/acme/worker:1.2.3
env:
LOG_LEVEL: ${var.LOG_LEVEL}
DATABASE_URL: ${secret.DATABASE_URL}
REDIS_URL: ${secret.REDIS_URL}
resources: { cpu: "500m", memory: "512Mi" }
healthcheck:
liveness: { exec: { command: [/usr/local/bin/worker-healthcheck] } }
web is reachable at web-<dep-id>.<apps-base>. worker has no ports — no Service, no Ingress, no readiness gate.
DATABASE_URL and REDIS_URL resolve against the repo or org secret store (repo first, org fallback). You configure them under Repos → settings → Secrets or Settings → Secrets, never in this file.
Custom build args + private registry pull
version: 1
services:
api:
build:
context: ./api
dockerfile: Dockerfile.prod
args:
NPM_TOKEN: ${secret.NPM_TOKEN}
BUILD_REV: ${var.BUILD_REV}
ports:
- { port: 8080, public: true }
env:
DATABASE_URL: ${secret.DATABASE_URL}
resources: { cpu: "1", memory: "1Gi" }
healthcheck:
readiness: { tcp: { port: 8080 } }
liveness: { http: { path: /metrics, port: 8080 } }
cache:
image: ghcr.io/acme/private-cache:tag
ports:
- { port: 6379 }
resources: { cpu: "200m", memory: "256Mi" }
cache pulls from a private registry. Configure the credentials once at the org level under Settings → Registries (see Private registries) — no per-service config is needed.
Custom domain for one public port
version: 1
services:
web:
build: { context: . }
ports:
- { port: 3000, public: true, domain: app.acme.com }
resources: { cpu: "500m", memory: "512Mi" }
healthcheck:
readiness: { http: { path: /healthz, port: 3000 } }
app.acme.com must be a verified parent zone for the org (claim and verify it under Settings → Domains first — see Custom domains). The deployed URL becomes web-<dep-id>.app.acme.com for default-branch deploys, or web-pr-<n>.app.acme.com for PR previews.