Docker Compose (dev services)

Understand the local Docker stack for Postgres, MinIO, and supporting services.

Last updated June 7, 2026

What runs in Docker locally

The root compose.yaml starts development infrastructure:

  • Postgres on port 5432
  • MinIO on port 9000 (console on 9001)
  • minio-init to create the wrkin bucket

The SvelteKit app and collab server run on the host via pnpm dev and pnpm collab:dev.

Start and stop

pnpm db:start    # docker compose up
docker compose down

To reset local data completely:

pnpm setup -- --reset

Storage configuration

Set S3_* in .env to match the MinIO defaults from .env.example:

S3_ENDPOINT="http://127.0.0.1:9000"
S3_BUCKET="wrkin"
S3_FORCE_PATH_STYLE="true"

Doc uploads, task attachments, and chat attachments are stored in the wrkin bucket. Docs library uploads and previews use the same storage pipeline.

Collab server

Docs real-time editing requires the Hocuspocus collab server on the host (pnpm collab:dev) and PUBLIC_COLLAB_WS_URL=ws://localhost:1234 in .env.

Production vs local

compose.yaml is for local development only. Production uses compose.prod.yaml with the app image, collab service, Caddy TLS, and backups. See Production deployment.