Skip to main content

Docker Deployment

Ticku ships as a multi-stage Docker build with a Docker Compose stack. One stack serves the whole platform — all tenants share this single app + database deployment (see Deployment Architecture).

The Stack

ServiceImagePurpose
appTicku (multi-stage, node:22-alpine → standalone runtime)The Next.js application
dbpostgres:16-alpineDatabase (skip if using managed Postgres)

Build & Run

# from the project root, with .env.production filled in
docker compose --env-file .env.production up -d --build

Health Check

The app exposes GET /api/health; the container HEALTHCHECK uses it. Verify:

curl https://<your-domain>/api/health
docker compose ps # app should report "healthy"

Updating to a New Release

git pull # or pull the new image
docker compose up -d --build # rebuild and restart
npm run db:migrate # apply any new migrations

Check the Release Notes for release-specific migration steps before updating.

Logs

docker compose logs -f app