clojure -T:build clean && clojure -T:build uber
clojure -T:build clean && clojure -T:build uber
This produces target/boundary-*.jar.
export JWT_SECRET="your-production-secret-min-32-chars"
export BND_ENV="production"
export DB_URL="jdbc:postgresql://host:5432/myapp"
export DB_PASSWORD="..."
java -jar target/boundary-*.jar server
| Variable | Required | Description |
|---|---|---|
| Yes | Minimum 32 characters. Used for signing JWT tokens. |
| Yes |
|
| Production | JDBC connection string. |
| Production | Database password. |
| When using cache/jobs | Redis connection URL. |
clojure -M:migrate up
Run migrations before starting the server in production.
A production-ready Dockerfile is included in the starter:
docker build -t my-boundary-app .
docker run -e JWT_SECRET="..." -e BND_ENV=production -p 3000:3000 my-boundary-app
Aero reads from resources/conf/{BND_ENV}/config.edn.
The production config uses environment variables for all secrets:
;; resources/conf/prod/config.edn
:boundary/db
{:url #env DB_URL
:password #env DB_PASSWORD
:pool-size 20}
:boundary/jwt
{:secret #env JWT_SECRET}
| Environment | Database |
|---|---|
Development | SQLite (zero config) |
Tests | H2 in-memory |
Staging / Production | PostgreSQL (recommended) |
PostgreSQL is required for multi-tenancy (boundary-tenant) and full-text search (boundary-search).
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |