4.2 KiB
4.2 KiB
Tschunk Order - Docker Deployment
Diese Anleitung beschreibt, wie Sie die Tschunk Order Anwendung mit Docker Compose deployen können.
Voraussetzungen
- Docker
- Docker Compose
Projektstruktur
tschunkorder/
├── docker-compose.yml # Haupt-Konfiguration
├── frontend/
│ ├── Dockerfile # Frontend Container
│ ├── nginx.conf # Frontend Nginx-Konfiguration
│ └── .dockerignore
├── backend/
│ ├── Dockerfile # Backend Container
│ └── .dockerignore
└── nginx/
├── nginx.conf # Haupt-Nginx-Konfiguration
└── conf.d/
└── default.conf # Reverse Proxy-Konfiguration
Services
1. Frontend (Vue.js + Vite)
- Port: Intern 80, extern über Nginx
- Technologie: Vue.js 3 mit Vite
- Container:
tschunk-frontend
2. Backend (FastAPI)
- Port: Intern 8000, extern 8000 (optional)
- Technologie: FastAPI mit Uvicorn
- Container:
tschunk-backend
3. Nginx Reverse Proxy
- Port: 80 (HTTP), 443 (HTTPS, optional)
- Funktion: Reverse Proxy für Frontend und Backend
- Container:
tschunk-nginx
Deployment
1. Anwendung starten
# Alle Services bauen und starten
docker-compose up --build
# Im Hintergrund starten
docker-compose up --build -d
2. Anwendung stoppen
# Services stoppen
docker-compose down
# Services und Volumes löschen
docker-compose down -v
3. Logs anzeigen
# Alle Logs
docker-compose logs
# Spezifischer Service
docker-compose logs frontend
docker-compose logs backend
docker-compose logs nginx
# Logs folgen
docker-compose logs -f
Zugriff auf die Anwendung
- Frontend: http://localhost/ (oder IP-Adresse)
- Backend API: http://localhost/api/ (oder IP-Adresse)
- WebSocket: ws://localhost/api/ws (oder IP-Adresse)
- Health Check: http://localhost/health (oder IP-Adresse)
API-Endpunkte
GET /api/orders
- Alle Bestellungen abrufenPOST /api/orders
- Neue Bestellung erstellenDELETE /api/orders/{id}
- Bestellung löschenGET /api/drinks
- Verfügbare Getränke
WebSocket
Der WebSocket-Endpunkt ist unter ws://localhost/api/ws
verfügbar und unterstützt:
- Echtzeit-Updates bei neuen/gelöschten Bestellungen
- Ping/Pong für Verbindungsüberwachung
- Bestellungen erstellen/löschen über WebSocket
Konfiguration
Umgebungsvariablen
Frontend
VITE_API_BASE_URL
: Backend API URL (Standard: http://backend:8000)
Backend
PYTHONUNBUFFERED
: Python Output nicht puffern (Standard: 1)
Nginx-Konfiguration
Die Nginx-Konfiguration befindet sich in:
nginx/nginx.conf
- Haupt-Konfigurationnginx/conf.d/default.conf
- Server-Konfiguration
Features
- Rate Limiting für API und WebSocket
- Gzip-Kompression
- Security Headers
- WebSocket-Support
- SPA-Routing für Frontend
- Vereinfachte Proxy-Logik (alle API-Endpunkte unter /api)
Troubleshooting
Container startet nicht
# Logs prüfen
docker-compose logs [service-name]
# Container neu bauen
docker-compose build --no-cache [service-name]
Netzwerk-Probleme
# Netzwerk-Status prüfen
docker network ls
docker network inspect tschunkorder_tschunk-network
Port-Konflikte
Falls Port 80 bereits belegt ist, ändern Sie in docker-compose.yml
:
nginx:
ports:
- "8080:80" # Statt "80:80"
Entwicklung
Hot Reload (Entwicklung)
Für die Entwicklung können Sie die Services einzeln starten:
# Backend mit Hot Reload
cd backend
uvicorn main:app --reload --host 0.0.0.0 --port 8000
# Frontend mit Hot Reload
cd frontend
npm run dev
Datenbank-Persistenz
Die aktuelle Implementierung verwendet eine In-Memory-Datenbank. Für Produktionsumgebungen sollten Sie eine persistente Datenbank hinzufügen.
Sicherheit
- Alle Services laufen in isolierten Containern
- Nginx bietet Rate Limiting und Security Headers
- Backend läuft als non-root User
- WebSocket-Verbindungen sind begrenzt
Monitoring
Health Checks
- Backend: Automatischer Health Check alle 30 Sekunden
- Nginx:
/health
Endpunkt
Logs
Alle Services loggen in stdout/stderr und können über docker-compose logs
abgerufen werden.