mindboost-infrastructure/scripts/deploy-traefik.sh

160 lines
5.8 KiB
Bash
Executable File

#!/bin/bash
set -e
# Funktion zur Überprüfung der Produktivumgebung
is_production() {
local prod_ip="85.215.56.185" # IP-Adresse deines Produktivservers
local current_ip
# Überprüfe das Betriebssystem
case "$OSTYPE" in
msys*|cygwin*|mingw*)
# Windows
current_ip=$(ipconfig | grep -i "IPv4 Address" | head -n 1 | awk '{print $NF}')
;;
darwin*)
# macOS
current_ip=$(ipconfig getifaddr en0) # Für Wi-Fi
if [ -z "$current_ip" ]; then
current_ip=$(ipconfig getifaddr en1) # Für Ethernet
fi
;;
linux*|bsd*|solaris*)
# Linux und andere Unix-ähnliche Systeme
current_ip=$(hostname -I | awk '{print $1}')
;;
*)
echo "Unbekanntes Betriebssystem: $OSTYPE"
return 1
;;
esac
echo "Erkannte IP-Adresse: $current_ip"
if [ "$current_ip" == "$prod_ip" ]; then
echo "Produktivumgebung erkannt."
return 0 # True, wir sind in der Produktivumgebung
else
echo "Lokale Entwicklungsumgebung erkannt."
return 1 # False, wir sind in der lokalen Umgebung
fi
}
# Funktion zum Setzen der Umgebungsvariablen
set_environment_variables() {
if is_production; then
export DOMAIN_SUFFIX=".mindboost.team"
export TRAEFIK_DASHBOARD_DOMAIN="traefik${DOMAIN_SUFFIX}"
export PORTAINER_DOMAIN="portainer${DOMAIN_SUFFIX}"
export FRONTEND_DOMAIN="app${DOMAIN_SUFFIX}"
export BACKEND_DOMAIN="b${DOMAIN_SUFFIX}"
else
export DOMAIN_SUFFIX=".local"
export TRAEFIK_DASHBOARD_DOMAIN="traefik${DOMAIN_SUFFIX}"
export PORTAINER_DOMAIN="portainer${DOMAIN_SUFFIX}"
export FRONTEND_DOMAIN="frontend${DOMAIN_SUFFIX}"
export BACKEND_DOMAIN="backend${DOMAIN_SUFFIX}"
fi
}
echo "Prüfe, ob Traefik läuft..."
set_environment_variables
if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
echo "Traefik läuft nicht. Starte Traefik mit CrowdSec Bouncer..."
if is_production; then
echo "Wir befinden uns in der Produktivumgebung."
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.prod.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/proxy/docker-compose.traefik.prod.yml up -d
else
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
echo "Starte Traefik und CrowdSec Bouncer mit docker-compose.traefik.local.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.traefik.local.yml up -d
fi
else
echo "Traefik läuft bereits. Aktualisiere die Konfiguration..."
if is_production; then
echo "Aktualisiere Traefik und CrowdSec Bouncer in der Produktivumgebung..."
docker compose -f ../apps/docker-compose.traefik.prod.yml up -d
else
echo "Aktualisiere Traefik und CrowdSec Bouncer in der lokalen Umgebung..."
docker compose -f ../apps/docker-compose.traefik.local.yml up -d
fi
fi
echo "Traefik und CrowdSec Bouncer Deployment abgeschlossen."
=================
echo "Prüfe, ob Traefik läuft..."
set_environment_variables
if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
echo "Traefik läuft nicht. Starte Traefik und Portainer..."
else
echo "Traefik läuft bereits. Aktualisiere die Konfiguration..."
fi
if is_production; then
echo "Wir befinden uns in der Produktivumgebung."
echo "Starte/Aktualisiere Deployment mit docker-compose.prod.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.prod.yml up -d
else
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
echo "Starte/Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.overwrite.yml up -d
fi
if ! docker ps --format '{{.Names}}' | grep -q 'traefik'; then
echo "Traefik läuft nicht."
if is_production; then
echo "Wir befinden uns in der Produktivumgebung."
set_environment_variables
echo "Starte Deployment mit docker-compose.prod.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.prod.yml up -d
else
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
read -p "Möchtest du die lokale Version zum Debuggen (docker-compose.overwrite.yml) starten? (y/n): " answer
if [[ "$answer" =~ ^[Yy]$ ]]; then
echo "Starte lokale Version..."
set_environment_variables
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.overwrite.yml up -d
else
echo "Deployment abgebrochen."
exit 1
fi
fi
else
echo "Traefik läuft bereits."
if is_production; then
echo "Wir befinden uns in der Produktivumgebung."
set_environment_variables
echo "Aktualisiere Deployment mit docker-compose.prod.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.prod.yml up -d
else
echo "Wir befinden uns in der lokalen Entwicklungsumgebung."
set_environment_variables
echo "Aktualisiere lokale Version mit docker-compose.overwrite.yml..."
env | grep DOMAIN # Debug: Zeige die gesetzten Umgebungsvariablen an
docker compose -f ../apps/docker-compose.overwrite.yml up -d
fi
fi
echo "Deployment abgeschlossen."