Docker Deployment Guide
Deploy the generated Account services with customer-managed database, network, and reverse-proxy infrastructure.
Important project boundary
CLI archives contain the generated admin-panel/, api-backend/, and landing-page/ folders. They never include or publish the source-repository docker/infra, docker/proxy, or docs directories. Those paths are BowlerKit operator tooling, not customer deliverables. Do not copy them into a customer project; provide equivalent customer-managed database, Redis, network, and reverse-proxy infrastructure instead.
Guest projects do not need this guide.
Customer-managed infrastructure
The generated Compose files expect external shared and web networks. Create and secure those networks with your infrastructure provider or deployment system, then attach PostgreSQL, Redis, Laravel, and the optional Go service according to your environment. The source-repository docker/infra and docker/proxy files are not a supported customer package.
Account services
After provisioning the database/user with your infrastructure tooling:
cd admin-panel
cp .env.example .env.production
# Set DB_*, REDIS_*, APP_URL, mail, Firebase, and RevenueCat values.
docker compose up -d --buildAdmin-panel Compose services are backend, queue, and scheduler.
Optional Go service:
cd ../api-backend
cp .env.example .env.production
# Match Laravel's DB/Redis/rate-limit configuration.
docker compose up -d --buildThe Go production compose expects external web/shared networks and advertises api-backend:8080 internally.
Documentation site
The BowlerKit documentation site is maintained separately and is not included in a customer archive. Customer projects do not need to deploy docs/ or its Compose file.
Reverse-proxy contract
If your deployment uses a reverse proxy, keep Laravel compatibility mode as the default:
| Prefix | Default upstream |
|---|---|
/api/v1/auth/* | Laravel |
/api/v1/auth/security/* | Laravel |
/api/v1/uploads* | Laravel |
/api/v1/webhooks* | Laravel |
/api/v1/app/* | Laravel compatibility mode |
/admin* | Laravel |
| catch-all | configured application upstream |
Deploy Go on web and switch only /api/v1/app/* to api-backend:8080 after parity validation. Keep auth issuance, uploads, webhooks, connected accounts, and destructive account routes on Laravel.
Commands
Run commands from the owning Compose directory:
docker compose ps
docker compose logs -f backend
docker compose logs -f api-backend
docker compose exec backend php artisan migrateDo not run migrate:fresh against production or delete named volumes unless you intend to destroy state.
Review every hostname, secret, Firebase credential mount, RevenueCat secret, trusted-proxy CIDR, and route before exposing a deployment. BowlerKit's repository-level infrastructure and Caddy configuration are operator-only examples and are not published or supported as customer production assets.
