# Coolify deployment (Docker Compose build pack): the one way KoolTap is deployed. See docs/production.md. # Postgres runs as a separate Coolify database resource so it gets scheduled backups; set DATABASE_URL to its # internal connection URL. Domains are assigned in the Coolify UI, on one site so the session cookie reaches the API: # api -> https://api.example.com:3001 # dashboard -> https://example.com:3000 services: api: build: context: . dockerfile: Dockerfile target: api environment: DATABASE_URL: ${DATABASE_URL} JWT_SECRET: ${SERVICE_BASE64_64_JWT} PORT: 3001 # The dashboard's address; several are comma separated CORS_ORIGIN: ${DASHBOARD_URL} RESEND_API_KEY: ${RESEND_API_KEY:-} RESEND_FROM_EMAIL: ${RESEND_FROM_EMAIL:-KoolTap } # Coolify's proxy is one hop; use 2 if Cloudflare proxying is also enabled TRUST_PROXY: ${TRUST_PROXY:-1} # Raise to make older terminal apps update; the default is in apps/api/src/terminal/app-version.ts MIN_APP_VERSION: ${MIN_APP_VERSION:-} volumes: # Product pictures: back this up with the database - images:/data/images healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3001/api/v1/health"] interval: 15s timeout: 5s retries: 5 # Migrations run before the server starts start_period: 60s restart: unless-stopped dashboard: build: context: . dockerfile: Dockerfile target: dashboard args: NEXT_PUBLIC_API_URL: ${API_URL}/api/v1 NEXT_PUBLIC_SITE_URL: ${DASHBOARD_URL} healthcheck: test: ["CMD", "wget", "-qO-", "http://127.0.0.1:3000/"] interval: 15s timeout: 5s retries: 5 start_period: 30s depends_on: api: condition: service_healthy restart: unless-stopped volumes: images: