Docker Compose with 24+ services: - PostgreSQL (PostGIS), Valkey, MinIO, Qdrant - Vault (PKI/TLS), Nginx (Reverse Proxy) - Backend Core API, Consent Service, Billing Service - RAG Service, Embedding Service - Gitea, Woodpecker CI/CD - Night Scheduler, Health Aggregator - Jitsi (Web/XMPP/JVB/Jicofo), Mailpit Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5.7 KiB
5.7 KiB
Umgebungs-Architektur
Übersicht
BreakPilot verwendet eine 3-Umgebungs-Strategie für sichere Entwicklung und Deployment:
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ Development │────▶│ Staging │────▶│ Production │
│ (develop) │ │ (staging) │ │ (main) │
└─────────────────┘ └─────────────────┘ └─────────────────┘
Tägliche Getesteter Code Produktionsreif
Entwicklung
Umgebungen
Development (Dev)
Zweck: Tägliche Entwicklungsarbeit
| Eigenschaft | Wert |
|---|---|
| Git Branch | develop |
| Compose File | docker-compose.yml + docker-compose.override.yml (auto) |
| Env File | .env.dev |
| Database | breakpilot_dev |
| Debug | Aktiviert |
| Hot-Reload | Aktiviert |
Start:
./scripts/start.sh dev
# oder einfach:
docker compose up -d
Staging
Zweck: Getesteter, freigegebener Code vor Produktion
| Eigenschaft | Wert |
|---|---|
| Git Branch | staging |
| Compose File | docker-compose.yml + docker-compose.staging.yml |
| Env File | .env.staging |
| Database | breakpilot_staging (separates Volume) |
| Debug | Deaktiviert |
| Hot-Reload | Deaktiviert |
Start:
./scripts/start.sh staging
# oder:
docker compose -f docker-compose.yml -f docker-compose.staging.yml up -d
Production (Prod)
Zweck: Live-System für Endbenutzer (ab Launch)
| Eigenschaft | Wert |
|---|---|
| Git Branch | main |
| Compose File | docker-compose.yml + docker-compose.prod.yml |
| Env File | .env.prod (NICHT im Repository!) |
| Database | breakpilot_prod (separates Volume) |
| Debug | Deaktiviert |
| Vault | Pflicht (keine Env-Fallbacks) |
Datenbank-Trennung
Jede Umgebung verwendet separate Docker Volumes für vollständige Datenisolierung:
┌─────────────────────────────────────────────────────────────┐
│ PostgreSQL Volumes │
├─────────────────────────────────────────────────────────────┤
│ breakpilot-dev_postgres_data │ Development Database │
│ breakpilot_staging_postgres │ Staging Database │
│ breakpilot_prod_postgres │ Production Database │
└─────────────────────────────────────────────────────────────┘
Port-Mapping
Um mehrere Umgebungen gleichzeitig laufen zu lassen, verwenden sie unterschiedliche Ports:
| Service | Dev Port | Staging Port | Prod Port |
|---|---|---|---|
| Backend | 8000 | 8001 | 8000 |
| PostgreSQL | 5432 | 5433 | - (intern) |
| MinIO | 9000/9001 | 9002/9003 | - (intern) |
| Qdrant | 6333/6334 | 6335/6336 | - (intern) |
| Mailpit | 8025/1025 | 8026/1026 | - (deaktiviert) |
Git Branching Strategie
main (Prod) ← Nur Release-Merges, geschützt
│
▼
staging ← Getesteter Code, Review erforderlich
│
▼
develop (Dev) ← Tägliche Arbeit, Default-Branch
│
▼
feature/* ← Feature-Branches (optional)
Workflow
- Entwicklung: Arbeite auf
develop - Code-Review: Erstelle PR von Feature-Branch →
develop - Staging: Promote
develop→stagingmit Tests - Release: Promote
staging→mainnach Freigabe
Promotion-Befehle
# develop → staging
./scripts/promote.sh dev-to-staging
# staging → main (Production)
./scripts/promote.sh staging-to-prod
Secrets Management
Development
.env.deventhält Entwicklungs-Credentials- Vault optional (Dev-Token)
- Mailpit für E-Mail-Tests
Staging
.env.stagingenthält Test-Credentials- Vault empfohlen
- Mailpit für E-Mail-Sicherheit
Production
.env.prodNICHT im Repository- Vault PFLICHT
- Echte SMTP-Konfiguration
Siehe auch: Secrets Management
Docker Compose Architektur
docker-compose.yml ← Basis-Konfiguration
│
├── docker-compose.override.yml ← Dev (auto-geladen)
│
├── docker-compose.staging.yml ← Staging (explizit)
│
└── docker-compose.prod.yml ← Production (explizit)
Automatisches Laden
Docker Compose lädt automatisch:
docker-compose.ymldocker-compose.override.yml(falls vorhanden)
Daher startet docker compose up automatisch die Dev-Umgebung.
Helper Scripts
| Script | Beschreibung |
|---|---|
scripts/env-switch.sh |
Wechselt zwischen Umgebungen |
scripts/start.sh |
Startet Services für Umgebung |
scripts/stop.sh |
Stoppt Services |
scripts/promote.sh |
Promotet Code zwischen Branches |
scripts/status.sh |
Zeigt aktuellen Status |
Verifikation
Nach Setup prüfen:
# Status anzeigen
./scripts/status.sh
# Branches prüfen
git branch -v
# Volumes prüfen
docker volume ls | grep breakpilot
Verwandte Dokumentation
- Secrets Management - Vault & Secrets
- DevSecOps - CI/CD & Security
- System-Architektur - Gesamtarchitektur