6.3 KiB
6.3 KiB
MYP Docker Setup - Mercedes-Benz TBA Marienfelde
Vollautomatische Docker-Containerisierung für das MYP (Manage Your Printers) 3D-Drucker-Management-System.
🚀 Schnellstart
Automatische Installation & Deployment
# Docker Setup ausführen (benötigt sudo)
sudo ./setup-docker.sh
Das Skript führt automatisch folgende Schritte aus:
- System-Update (apt update & upgrade)
- Docker Installation (proprietäre Debian-Version)
- Docker Compose Installation
- Bereinigung bestehender Container/Images
- Multi-Port-Deployment (80, 443, 5000)
Manuelle Docker-Befehle
# Container bauen und starten
docker-compose up -d
# Container-Status prüfen
docker-compose ps
# Logs verfolgen
docker-compose logs -f
# Container stoppen
docker-compose down
# Komplette Bereinigung
docker-compose down -v --rmi all
🌐 Verfügbare Services
Nach erfolgreichem Setup sind drei Container verfügbar:
Service | Port | URL | Zweck |
---|---|---|---|
HTTP | 80 | http://localhost:80 | Produktions-HTTP |
HTTPS | 443 | https://localhost:443 | Produktions-HTTPS (SSL) |
Development | 5000 | http://localhost:5000 | Development/Debug |
📦 Container-Architektur
Multi-Stage Dockerfile
- Python Builder: Dependencies in virtueller Umgebung
- Node.js Builder: Frontend-Assets (TailwindCSS)
- Production Runtime: Optimierte Laufzeitumgebung
Container-Features
- ✅ Optimierte Python 3.11 Umgebung
- ✅ SSL-Zertifikate (automatisch generiert)
- ✅ Health Checks für alle Services
- ✅ Persistente Volumes für Daten
- ✅ Development Mode mit Live-Reload
- ✅ Security (Non-root Benutzer)
🗂️ Persistente Daten
Docker Volumes für dauerhafte Datenspeicherung:
# Alle MYP-Volumes anzeigen
docker volume ls | grep myp-system
# Volume-Details
docker volume inspect myp-system-data
Volume | Zweck | Mount Point |
---|---|---|
myp-system-data |
Datenbank & Konfiguration | /app/instance |
myp-system-logs |
System-Logs | /app/logs |
myp-system-uploads |
Datei-Uploads | /app/uploads |
myp-system-ssl |
SSL-Zertifikate | /app/ssl |
🔧 Konfiguration
Umgebungsvariablen
Variable | Standard | Beschreibung |
---|---|---|
MYP_ENV |
production | Umgebung (development/production) |
MYP_PORT |
5000 | Anwendungs-Port |
MYP_HOST |
0.0.0.0 | Bind-Adresse |
MYP_SSL |
false | SSL aktivieren |
FLASK_ENV |
production | Flask-Umgebung |
Container-spezifische Konfiguration
# HTTP Container (Port 80)
environment:
- MYP_PORT=80
- MYP_SSL=false
# HTTPS Container (Port 443)
environment:
- MYP_PORT=443
- MYP_SSL=true
# Development Container (Port 5000)
environment:
- MYP_PORT=5000
- MYP_ENV=development
- MYP_DEBUG=true
🛠️ Entwicklung
Live-Reload für Development
Der Development-Container (Port 5000) unterstützt Live-Reload:
# In docker-compose.yml
volumes:
- ./backend:/app:ro # Read-only Code-Mounting
Custom Docker Compose
Erstelle docker-compose.override.yml
für lokale Anpassungen:
version: '3.8'
services:
myp-dev:
environment:
- MYP_DEBUG=true
- FLASK_ENV=development
volumes:
- ./backend:/app # Schreibzugriff für Development
🔍 Monitoring & Debugging
Health Checks
Alle Container haben automatische Health Checks:
# Container-Gesundheit prüfen
docker-compose ps
# Detaillierte Health-Info
docker inspect myp-system-http | grep -A 10 Health
Logs & Debugging
# Alle Container-Logs
docker-compose logs -f
# Spezifischer Container
docker-compose logs -f myp-http
# In Container einsteigen
docker exec -it myp-system-dev bash
# Live-Logs aus Anwendung
docker exec -it myp-system-dev tail -f /app/logs/app/app.log
Performance-Monitoring
# Ressourcen-Verbrauch
docker stats
# Container-Prozesse
docker exec -it myp-system-http ps aux
# Netzwerk-Verbindungen
docker exec -it myp-system-http netstat -tulpn
🔒 Sicherheit
SSL-Zertifikate
Automatisch generierte selbstsignierte Zertifikate:
# Zertifikat-Details anzeigen
docker exec -it myp-system-https openssl x509 -in /app/ssl/server.crt -text -noout
# Neue Zertifikate generieren
docker exec -it myp-system-https rm -f /app/ssl/server.*
docker-compose restart myp-https
Container-Sicherheit
- ✅ Non-root Benutzer (
myp
) - ✅ Minimale Base Image (python:slim)
- ✅ Keine unnötigen Pakete
- ✅ Read-only Dateisystem (wo möglich)
📊 Produktions-Deployment
Systemanforderungen
- OS: Debian 11+ / Ubuntu 20.04+
- RAM: Mindestens 2GB
- CPU: 2 Cores empfohlen
- Speicher: 10GB+ verfügbar
- Netzwerk: Ports 80, 443, 5000 verfügbar
Deployment-Checklist
- ✅ Firewall-Regeln für Ports 80, 443
- ✅ SSL-Zertifikate für Production-Domain
- ✅ Backup-Strategie für Docker Volumes
- ✅ Monitoring Setup (Logs, Health Checks)
- ✅ Auto-Start Konfiguration (
restart: unless-stopped
)
Production-Setup
# Environment für Production setzen
export MYP_ENV=production
export FLASK_ENV=production
# Container mit Production-Config starten
docker-compose -f docker-compose.yml up -d
# Auto-Start beim System-Boot
sudo systemctl enable docker
🚨 Troubleshooting
Häufige Probleme
Problem | Ursache | Lösung |
---|---|---|
Port bereits belegt | Anderer Service auf 80/443/5000 | sudo netstat -tulpn | grep :80 |
Permission Denied | Docker-Gruppe fehlt | sudo usermod -aG docker $USER |
Build-Fehler | Requirements fehlen | docker-compose build --no-cache |
SSL-Warnung | Selbstsignierte Zertifikate | Normale Browser-Warnung |
Debug-Befehle
# Container-Details
docker inspect myp-system-http
# Netzwerk-Connectivity
docker network ls
docker network inspect myp-system-network
# Volume-Probleme
docker volume inspect myp-system-data
# Build-Logs
docker-compose build --progress=plain
# Komplette Bereinigung
./setup-docker.sh # Führt automatische Bereinigung durch
📞 Support
Mercedes-Benz TBA Marienfelde
Autor: Till Tomczak
E-Mail: till.tomczak@mercedes-benz.com
Projektdokumentation: CLAUDE.md
Setup-Log: /tmp/myp-docker-setup.log