Local development infrastructure using Docker Compose.
This stack is intended for local development only. Do not use these defaults for production.
| Service | URL | Notes |
|---|---|---|
| Caddy | https://*.localhost | Reverse proxy for local services |
| Vault | https://vault.localhost | Dev-mode Vault, token defaults to root |
| Postgres | localhost:5432 | Default DB/user/password: dev / dev / dev |
| Keycloak | https://keycloak.localhost | Admin defaults to admin / admin |
| Mailpit | https://mailpit.localhost | SMTP on localhost:1025 |
| MinIO | https://minio.localhost | S3-compatible storage UI |
| MinIO S3 API | https://s3.localhost | S3-compatible API through Caddy |
docker compose --profile core up -dStop the stack:
docker compose --profile core downStop and delete named volumes/data:
docker compose --profile core down -vThe compose file has local-dev defaults built in. To override them:
cp .env.example .envThen edit .env.
.env is intentionally gitignored.
You can start the full core stack:
docker compose --profile core up -dOr start selected services:
docker compose --profile vault up -d
docker compose --profile keycloak up -d
docker compose --profile mail up -d
docker compose --profile minio up -dUseful profile groups:
core- common local dev stacksecurity- Vaultidentity- Keycloakdatabase- Postgresdevtools- Mailpitstorage- MinIO
Defaults are intentionally simple and for local use only:
| Service | Username | Password / Token |
|---|---|---|
| Vault | n/a | root |
| Postgres | dev |
dev |
| Keycloak | admin |
admin |
| MinIO | developer |
developer123 |
- Vault is running in dev mode, so Vault data/config is disposable.
- Keycloak data persists in the Postgres named volume.
- Caddy stores its local CA/certs in named volumes.
- MinIO object data persists in the
minio_datanamed volume.