Note : Docker support is currently experimental , and the repository
publishes no container image and contains no Dockerfile. The manifests on
this page are a starting sketch: you must build and host your own image, then
replace your-registry/botserver:latest accordingly. Production deployments
use the installer and LXC containers instead — see
Container Deployment (LXC) .
Option Description Best For
All-in-One Single container with all components Development, testing
Microservices Separate containers per component Production, scaling
docker run -d \
--name botserver \
-p 8000:8000 \
-p 9000:9000 \
-v botserver-data:/opt/gbo/data \
-e ADMIN_PASS=your-secure-password \
your-registry/botserver:latest
version: '3.8'
services:
botserver:
image: your-registry/botserver:latest
restart: unless-stopped
ports:
- "8000:8000"
- "9000:9000"
- "9001:9001"
volumes:
- botserver-data:/opt/gbo/data
- ./work:/opt/gbo/work
environment:
- ADMIN_PASS=${ADMIN_PASS:-changeme}
- DOMAIN=${DOMAIN:-localhost}
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:8000/health"]
interval: 30s
timeout: 10s
retries: 3
volumes:
botserver-data:
Resources: 2 CPU cores, 4GB RAM minimum
version: '3.8'
services:
postgres:
image: postgres:16-alpine
volumes:
- postgres-data:/var/lib/postgresql/data
environment:
POSTGRES_USER: botserver
POSTGRES_PASSWORD: ${DB_PASSWORD}
POSTGRES_DB: botserver
networks:
- gb-network
minio:
image: minio/minio:latest
command: server /data --console-address ":9001"
ports:
- "9000:9000"
- "9001:9001"
volumes:
- minio-data:/data
environment:
MINIO_ROOT_USER: ${DRIVE_ACCESSKEY}
MINIO_ROOT_PASSWORD: ${DRIVE_SECRET}
networks:
- gb-network
qdrant:
image: qdrant/qdrant:latest
ports:
- "6333:6333"
volumes:
- qdrant-data:/qdrant/storage
networks:
- gb-network
botserver:
image: your-registry/botserver:latest
depends_on:
- postgres
- minio
- qdrant
ports:
- "8000:8000"
volumes:
- ./work:/opt/gbo/work
environment:
DATABASE_URL: postgres://botserver:${DB_PASSWORD}@postgres:5432/botserver
DRIVE_URL: http://minio:9000
DRIVE_ACCESSKEY: ${DRIVE_ACCESSKEY}
DRIVE_SECRET: ${DRIVE_SECRET}
QDRANT_URL: http://qdrant:6333
ADMIN_PASS: ${ADMIN_PASS}
networks:
- gb-network
networks:
gb-network:
volumes:
postgres-data:
minio-data:
qdrant-data:
DB_PASSWORD=secure-db-password
DRIVE_ACCESSKEY=minioadmin
DRIVE_SECRET=secure-minio-secret
ADMIN_PASS=admin-password
DOMAIN=your-domain.com
apiVersion: apps/v1
kind: Deployment
metadata:
name: botserver
spec:
replicas: 3
selector:
matchLabels:
app: botserver
template:
spec:
containers:
- name: botserver
image: your-registry/botserver:latest
ports:
- containerPort: 8000
resources:
requests:
memory: "512Mi"
cpu: "250m"
limits:
memory: "2Gi"
cpu: "1000m"
livenessProbe:
httpGet:
path: /health
port: 8000
---
apiVersion: v1
kind: Service
metadata:
name: botserver
spec:
selector:
app: botserver
ports:
- port: 80
targetPort: 8000
type: LoadBalancer
Service Endpoint
botserver GET /health
PostgreSQL pg_isready
MinIO GET /minio/health/live
Qdrant GET /health
Issue Solution
Container won’t start docker logs gb-botserver
DB connection failed docker exec -it gb-botserver psql $DATABASE_URL -c "SELECT 1"
Memory issues Increase limits in compose or add deploy.resources.limits.memory
# 1. Backup data
pg_dump botserver > backup.sql
mc cp --recursive /path/to/drive minio/backup/
# 2. Start Docker containers
# 3. Restore
docker exec -i gb-postgres psql -U botserver < backup.sql
docker exec gb-minio mc cp --recursive /backup minio/drive/