#!/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."