tschunkorder/README-Docker.md

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

API-Endpunkte

  • GET /api/orders - Alle Bestellungen abrufen
  • POST /api/orders - Neue Bestellung erstellen
  • DELETE /api/orders/{id} - Bestellung löschen
  • GET /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

Backend

  • PYTHONUNBUFFERED: Python Output nicht puffern (Standard: 1)

Nginx-Konfiguration

Die Nginx-Konfiguration befindet sich in:

  • nginx/nginx.conf - Haupt-Konfiguration
  • nginx/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.