BowlerKitBowlerKit

Docker Deployment Guide

10/11/2026

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 --build

Admin-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 --build

The 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:

PrefixDefault 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-allconfigured 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 migrate

Do 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.