# 🎯 Empfohlener Test-Workflow für Git-Deployment ## Meine Empfehlung: **Schritt-für-Schritt mit Checks** ### Warum? - ✅ Minimiert Risiko von Fehlern - ✅ Erlaubt Verifikation nach jedem Schritt - ✅ Einfaches Rollback bei Problemen - ✅ Klare Fehlerdiagnose --- ## 📋 Workflow ### Schritt 1: Image pushen (falls nötig) **Wann nötig?** - Wenn Production-Server das Image aus der Registry zieht - Wenn Image lokal gebaut wurde und noch nicht gepusht **Befehl:** ```bash # Im Projekt-Root docker push registry.michaelschiemer.de/framework:latest ``` **Check:** ```bash # Prüfen ob Image in Registry ist (optional) curl -k https://registry.michaelschiemer.de/v2/framework/tags/list ``` --- ### Schritt 2: Git-Variablen setzen (via Ansible) **Warum Ansible?** - ✅ Automatisiert und reproduzierbar - ✅ Aktualisiert .env korrekt - ✅ Startet Container automatisch neu **Befehl:** ```bash cd deployment/ansible ansible-playbook -i inventory/production.yml \ playbooks/sync-code.yml \ -e "git_repo_url=https://git.michaelschiemer.de/michael/michaelschiemer.git" \ -e "git_branch=main" ``` **Was passiert?** 1. .env Datei wird mit Git-Variablen aktualisiert 2. Container wird neu gestartet 3. Entrypoint führt Git Clone/Pull aus 4. Logs werden angezeigt --- ### Schritt 3: Logs prüfen **Auf Production Server:** ```bash ssh deploy@94.16.110.151 # Logs mit Git-Filter docker logs app --tail 100 | grep -E "(Git|Clone|Pull|✅|❌)" # Oder vollständige Logs docker logs app --tail 50 ``` **Erwartete Logs:** ``` 📥 Cloning/Pulling code from Git repository... 📥 Cloning repository from https://git.michaelschiemer.de/... (branch: main) 📦 Installing/updating Composer dependencies... ✅ Git sync completed ``` --- ### Schritt 4: Code-Verifikation **Prüfen ob Code im Container ist:** ```bash docker exec app ls -la /var/www/html/ | head -20 docker exec app test -d /var/www/html/.git && echo "✅ Git repo vorhanden" || echo "❌ Fehlt" docker exec app test -f /var/www/html/composer.json && echo "✅ composer.json vorhanden" || echo "❌ Fehlt" ``` --- ### Schritt 5: Application Health Check ```bash curl -f https://michaelschiemer.de/health || echo "❌ Health Check fehlgeschlagen" ``` --- ## 🎯 Mein konkreter Vorschlag **Starte mit Schritt 2** (Git-Variablen setzen via Ansible), weil: 1. **Ansible prüft automatisch**, ob alles vorhanden ist 2. **Startet Container automatisch** neu 3. **Zeigt Logs direkt** an 4. **Minimaler Aufwand** - ein Befehl Falls das Image noch nicht in der Registry ist, wird der Container automatisch das neue Image ziehen beim `docker compose up`. --- ## 🚨 Alternative: Lokaler Test (falls gewünscht) Falls du erst lokal testen möchtest: ```bash # Lokal Container starten mit Git-Variablen cd deployment/stacks/application # .env erstellen/kopieren cp .env.example .env # Git-Variablen hinzufügen echo "" >> .env echo "GIT_REPOSITORY_URL=https://git.michaelschiemer.de/michael/michaelschiemer.git" >> .env echo "GIT_BRANCH=main" >> .env # Container starten docker compose up -d app # Logs prüfen docker compose logs app | grep -E "(Git|Clone|Pull)" ``` --- ## ✅ Entscheidung **Meine Empfehlung:** Starte mit **Schritt 2** (Ansible Playbook). Das ist der sauberste und sicherste Weg. Soll ich das für dich ausführen?