120 lines
3.2 KiB
Bash
Executable File
120 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
||
# PHP Projekt Deployment Script für Netcup (nutzt bestehende docker-compose.yml)
|
||
|
||
set -e
|
||
|
||
echo "🚀 Projekt Deployment zu Netcup (nutzt deine docker-compose.yml)"
|
||
echo ""
|
||
|
||
# Prüfe ob Konfiguration angepasst wurde
|
||
if grep -q "85.123.456.789" inventory/hosts.yml; then
|
||
echo "❌ Bitte erst die Konfiguration anpassen!"
|
||
echo ""
|
||
echo "1. vim inventory/hosts.yml"
|
||
echo " - Server IP ändern"
|
||
echo " - Domain ändern"
|
||
echo " - app_port prüfen (Port deiner App)"
|
||
echo ""
|
||
echo "2. Dann nochmal: ./deploy.sh"
|
||
exit 1
|
||
fi
|
||
|
||
LOCAL_APP_PATH=$(grep "local_app_path:" inventory/hosts.yml | awk '{print $2}' | tr -d '"')
|
||
|
||
# Prüfe Projektstruktur
|
||
echo "📁 Prüfe Projektstruktur..."
|
||
FULL_PATH="$LOCAL_APP_PATH"
|
||
|
||
if [ ! -d "$FULL_PATH" ]; then
|
||
echo "❌ Projekt-Verzeichnis nicht gefunden: $FULL_PATH"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Projektstruktur OK:"
|
||
echo " 📂 Projekt: $FULL_PATH"
|
||
|
||
# Prüfe docker-compose.yml
|
||
if [ -f "$FULL_PATH/docker-compose.yml" ]; then
|
||
echo " ✅ docker-compose.yml gefunden im Root"
|
||
elif [ -f "$FULL_PATH/docker/docker-compose.yml" ]; then
|
||
echo " ✅ docker-compose.yml gefunden in docker/"
|
||
else
|
||
echo " ℹ️ Keine docker-compose.yml gefunden - wird automatisch erstellt"
|
||
fi
|
||
|
||
# Zeige docker-compose.yml Inhalt falls vorhanden
|
||
if [ -f "$FULL_PATH/docker-compose.yml" ]; then
|
||
echo ""
|
||
echo "📋 Deine docker-compose.yml (erste 10 Zeilen):"
|
||
head -10 "$FULL_PATH/docker-compose.yml" | sed 's/^/ /'
|
||
elif [ -f "$FULL_PATH/docker/docker-compose.yml" ]; then
|
||
echo ""
|
||
echo "📋 Deine docker-compose.yml aus docker/ (erste 10 Zeilen):"
|
||
head -10 "$FULL_PATH/docker/docker-compose.yml" | sed 's/^/ /'
|
||
fi
|
||
|
||
# Ping test
|
||
echo ""
|
||
echo "🔍 Teste Verbindung zum Server..."
|
||
if ! ansible all -m ping; then
|
||
echo "❌ Server nicht erreichbar. Prüfe:"
|
||
echo " - IP-Adresse korrekt?"
|
||
echo " - SSH-Key installiert? (ssh-copy-id root@deine-ip)"
|
||
echo " - Server läuft?"
|
||
exit 1
|
||
fi
|
||
|
||
echo "✅ Server erreichbar!"
|
||
echo ""
|
||
|
||
# Wähle Deployment-Methode
|
||
echo "🔧 Deployment-Optionen:"
|
||
echo "1. Standard: Saubere Docker-Installation (empfohlen)"
|
||
echo "2. Fallback: Debian Standard-Pakete (falls Probleme auftreten)"
|
||
echo ""
|
||
read -p "Wähle Option (1/2): " -n 1 -r
|
||
echo
|
||
|
||
if [[ $REPLY == "2" ]]; then
|
||
PLAYBOOK="deploy-debian-fallback.yml"
|
||
echo "📦 Verwende Debian Standard-Pakete"
|
||
else
|
||
PLAYBOOK="deploy.yml"
|
||
echo "🐳 Verwende saubere Docker-Installation"
|
||
fi
|
||
|
||
# Deployment confirmation
|
||
read -p "🚀 Projekt deployen? (y/N): " -n 1 -r
|
||
echo
|
||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||
echo "Deployment abgebrochen."
|
||
exit 0
|
||
fi
|
||
|
||
echo "🔧 Starte Deployment mit $PLAYBOOK..."
|
||
echo "💡 Das Deployment nutzt deine bestehende docker-compose.yml!"
|
||
echo ""
|
||
|
||
ansible-playbook "$PLAYBOOK"
|
||
|
||
echo ""
|
||
echo "🎉 Deployment abgeschlossen!"
|
||
echo ""
|
||
|
||
# Zeige Ergebnisse
|
||
DOMAIN=$(grep "domain:" inventory/hosts.yml | awk '{print $2}' | tr -d '"')
|
||
echo "🌐 Dein Projekt ist verfügbar unter:"
|
||
echo " https://$DOMAIN"
|
||
echo ""
|
||
echo "📊 Status prüfen:"
|
||
echo " curl -I https://$DOMAIN"
|
||
echo ""
|
||
echo "🔧 Container-Status anschauen:"
|
||
echo " make status"
|
||
echo ""
|
||
echo "🔧 Logs anschauen:"
|
||
echo " make logs"
|
||
echo ""
|
||
echo "🔄 Nach Änderungen:"
|
||
echo " make deploy"
|