Docker dev stack: Postgres 16 + MinIO, schema auto-applied on fresh volumes

A single `docker compose up` now brings up the full local stack - Postgres, MinIO, and a one-shot bucket setup sidecar. Non-default ports (15432, 19000/19001) mean it won't stomp on services you already have running.

infrastructureintegration

The docker-compose.yml defines three services. Postgres 16 (alpine) runs on port 15432. It mounts docs/db/schema.sql as an init script, so a fresh postgres_data volume gets the full schema on first boot. MinIO runs on 19000 (S3 API) and 19001 (console) with minioadmin/minioadmin as root credentials. A minio-create-bucket sidecar waits on MinIO's health check and creates the mike bucket.

Health checks on both main services gate the sidecar via condition: service_healthy, so the bucket creation only runs after MinIO is ready.

Two things to know before relying on this setup. The minio-create-bucket sidecar uses minio/mc:latest with no pinned tag - that will drift as MinIO releases new versions, and latest images occasionally have breaking changes. The schema bind-mount is read-only and only applies during container initialization. If you modify docs/db/schema.sql during development, the change won't apply to an existing volume; you need to remove the volume and recreate the container.

This commit also bundles two source file changes that belong to the ongoing backend consolidation: the route dispatch additions in api/v1/[[...path]]/route.ts, and the "Use Ollama" quick-switch button on the models settings page.

So what Worth importing if you want a reproducible local dev environment and don't already have one. The compose file is self-contained. Pin the `minio/mc` image tag before using it in any shared or CI environment.

View this fork on GitHub →

Spotted something wrong? Or know the PR text has fresher detail than the writeup above?

Commits in this thread

1 commit from elitan/mike, oldest first. Source extracted verbatim from the harvested git log.

SHA Subject Author Date
a0a60f92 fix(local): support docker dev setup Johan Eliasson 2026-05-15 ↗ GitHub

Capture this thread into my fork

Download a single Markdown prompt that tells Claude how to port every commit above into your working tree — adapting paths and structure to match your repo. Run it via claude -p < capture-thread-415.md from inside the repo you want the changes in.

⬇ Download capture-thread-415.md