Skip to content

First run

This guide walks through bringing up Docket from a fresh clone to a logged-in browser session.

  • Docker and Docker Compose
  • Git
Terminal window
git clone https://git.bcnelson.dev/bcnelson/docket.git
cd docket
cp docket.example.toml docket.toml

Edit docket.toml if needed — defaults work for local development. See Configuration for the full reference.

Terminal window
docker compose up -d

This starts PostgreSQL 15 with persistent storage and Docket itself (which runs migrations automatically on startup).

Terminal window
docker compose exec docket /docket bootstrap-admin \
--email admin@example.com \
--name "Admin User"

You’ll be prompted for a password (minimum 8 characters). The command runs migrations if they haven’t run yet, creates the user, and assigns them to the Administrators group.

If you’d rather not shell into the container, set these env vars on the Docket service before docker compose up and the admin is created during startup:

environment:
DOCKET_AUTH__BOOTSTRAP_ADMIN_EMAIL: admin@example.com
DOCKET_AUTH__BOOTSTRAP_ADMIN_PASSWORD: change-me-at-least-8-chars
DOCKET_AUTH__BOOTSTRAP_ADMIN_NAME: Admin User

The flow is idempotent — subsequent restarts are no-ops. Pick one or the other; don’t mix.

Terminal window
curl http://localhost:8080/readyz

Expected response:

{"status":"ready","version":"dev","commit":"...","build_date":"...","gates":{...}}

/readyz only returns ready once startup gates (config loaded, database reachable, migrations current, registries warm) have all passed.

Open http://localhost:8080 in a browser and sign in with the admin credentials you just created. You’ll land on the ticket workbench.

Terminal window
docker compose down # stop, keep data
docker compose down -v # stop and delete data