3.3 KiB
3.3 KiB
🎯 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:
# Im Projekt-Root
docker push registry.michaelschiemer.de/framework:latest
Check:
# 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:
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?
- .env Datei wird mit Git-Variablen aktualisiert
- Container wird neu gestartet
- Entrypoint führt Git Clone/Pull aus
- Logs werden angezeigt
Schritt 3: Logs prüfen
Auf Production Server:
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:
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
curl -f https://michaelschiemer.de/health || echo "❌ Health Check fehlgeschlagen"
🎯 Mein konkreter Vorschlag
Starte mit Schritt 2 (Git-Variablen setzen via Ansible), weil:
- Ansible prüft automatisch, ob alles vorhanden ist
- Startet Container automatisch neu
- Zeigt Logs direkt an
- 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:
# 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?