DeploymentContainers & Compose

Containers & Compose

Build the frontend and backend container images and run them, via Studio or manually.

Two container images

Each SiteKnock app produces two images — one for the Next.js frontend and one for the Express backend. They run side by side and communicate over HTTP.

Build and run with Studio

Studio's deploy flow builds both images, starts them with your configured environment variables, applies migrations, and health-checks the result. This is the recommended path and handles the details for you.

Container image builds in SiteKnock Studio
Container image builds in SiteKnock Studio

Manual build

If you orchestrate deployments yourself, build the images from each app folder:

docker build -t my-app-frontend ./apps/frontend
docker build -t my-app-backend ./apps/backend

Then run them with your production environment variables, for example via Docker Compose. Make sure:

  • The backend has DATABASE_URL, BETTER_AUTH_SECRET, FRONTEND_ORIGIN, and BACKEND_PUBLIC_URL.
  • The frontend has NEXT_PUBLIC_API_BASE_URL pointing at the backend.
  • Provider credentials for storage, email, and billing are set where used.

See the Deployment Overview for the full variable list.

Public assets

Public files — logos, Open Graph images, and other marketing assets — live under apps/frontend/public/assets/* and ship inside the frontend image. User uploads and private files should use S3-compatible storage in production.

Keep configuration in environment variables, not baked into images. The same image should run in staging and production with different env values.

Next steps