#!/bin/bash # Projektarbeit-MYP Startskript für Linux # Dieses Skript startet alle notwendigen Dienste für das MYP-Projekt echo -e "\e[32mStarte MYP-Projekt...\e[0m" # SSH-Server prüfen und aktivieren echo -e "\e[33mPrüfe SSH-Server-Status...\e[0m" if command -v systemctl > /dev/null; then # Prüfen, ob SSH-Server installiert ist if ! systemctl list-unit-files | grep -q ssh.service; then echo -e "\e[33mSSH-Server scheint nicht installiert zu sein. Versuche zu installieren...\e[0m" if command -v apt-get > /dev/null; then sudo apt-get update && sudo apt-get install -y openssh-server elif command -v yum > /dev/null; then sudo yum install -y openssh-server else echo -e "\e[31mPacket-Manager nicht gefunden. Bitte installieren Sie openssh-server manuell.\e[0m" fi fi # SSH-Server aktivieren und starten echo -e "\e[33mAktiviere SSH-Server beim Systemstart...\e[0m" sudo systemctl enable ssh.service || sudo systemctl enable sshd.service # SSH-Server starten, falls nicht bereits läuft if ! systemctl is-active --quiet ssh.service && ! systemctl is-active --quiet sshd.service; then echo -e "\e[33mStarte SSH-Server...\e[0m" sudo systemctl start ssh.service || sudo systemctl start sshd.service else echo -e "\e[32mSSH-Server läuft bereits.\e[0m" fi else echo -e "\e[31mSystemctl nicht gefunden. Bitte aktivieren Sie den SSH-Server manuell.\e[0m" fi # Überprüfen, ob Docker läuft if ! docker info > /dev/null 2>&1; then echo -e "\e[33mDocker scheint nicht zu laufen. Versuche Docker zu starten...\e[0m" # Versuchen, Docker zu starten (funktioniert auf Systemen mit systemd) if command -v systemctl > /dev/null; then sudo systemctl start docker sleep 5 if ! docker info > /dev/null 2>&1; then echo -e "\e[31mDocker konnte nicht gestartet werden. Bitte starten Sie Docker manuell und führen Sie dieses Skript erneut aus.\e[0m" exit 1 fi else echo -e "\e[31mDocker ist nicht gestartet und konnte nicht automatisch gestartet werden.\e[0m" echo -e "\e[31mBitte starten Sie Docker manuell und führen Sie dieses Skript erneut aus.\e[0m" exit 1 fi echo -e "\e[32mDocker wurde erfolgreich gestartet.\e[0m" fi # Überprüfen, ob die Container bereits laufen RUNNING_CONTAINERS=$(docker ps --format "{{.Names}}" | grep -E "myp-backend|myp-rp|myp-caddy" | wc -l) if [ "$RUNNING_CONTAINERS" -eq 3 ]; then echo -e "\e[32mAlle MYP-Container laufen bereits.\e[0m" else # Container starten echo -e "\e[33mStarte MYP-Container...\e[0m" # Ins Projektverzeichnis wechseln SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$SCRIPT_DIR" # Docker-Compose ausführen docker-compose up -d # Warten, bis alle Container laufen echo -e "\e[33mWarte, bis alle Container bereit sind...\e[0m" ALL_RUNNING=false RETRY_COUNT=0 MAX_RETRIES=30 while [ "$ALL_RUNNING" = false ] && [ "$RETRY_COUNT" -lt "$MAX_RETRIES" ]; do sleep 5 RETRY_COUNT=$((RETRY_COUNT + 1)) BACKEND_HEALTH=$(docker inspect --format='{{.State.Health.Status}}' myp-backend 2>/dev/null) FRONTEND_HEALTH=$(docker inspect --format='{{.State.Health.Status}}' myp-rp 2>/dev/null) if [ "$BACKEND_HEALTH" = "healthy" ] && [ "$FRONTEND_HEALTH" = "healthy" ]; then ALL_RUNNING=true fi done if [ "$ALL_RUNNING" = true ]; then echo -e "\e[32mAlle MYP-Container sind bereit und laufen.\e[0m" else echo -e "\e[33mZeitüberschreitung beim Warten auf Container. Bitte überprüfen Sie den Status mit 'docker ps'.\e[0m" fi fi # Informationen zur Anwendung anzeigen echo -e "\n\e[36mMYP-Anwendung ist jetzt verfügbar unter:\e[0m" echo -e " * http://localhost" echo -e " * http://192.168.0.5:5000 (Backend API direkt)" echo -e "\n\e[36mDas Backend ist unter der festen IP 192.168.0.5 erreichbar.\e[0m" echo -e "\e[36mDie API kann über http://localhost/api/ angesprochen werden.\e[0m" echo -e "\n\e[36mSSH-Server ist aktiviert und wird beim Systemstart automatisch gestartet.\e[0m" echo -e "\n\e[33mZum Beenden der Anwendung verwenden Sie: docker-compose down\e[0m" # Ausführbare Rechte setzen chmod +x "$0"