#!/bin/bash CONTAINER_NAME="local-mysql-dev" MYSQL_ROOT_PASSWORD="root" MYSQL_PORT="3307" MYSQL_IMAGE="mysql:8.4" choice=$(printf "󰆼 MySQL starten\n󰅖 MySQL stoppen\n󰑓 MySQL neustarten\n󰍉 MySQL Status\n󰌑 MySQL Logs\n󰒓 MySQL erstellen (neu)" | wofi --dmenu --prompt "Local MySQL") docker_service_running() { systemctl is-active --quiet docker } docker_usable() { docker version >/dev/null 2>&1 } ensure_docker_ready() { if ! docker_service_running; then notify-send "MySQL" "Docker-Service läuft nicht" return 1 fi if ! docker_usable; then notify-send "MySQL" "Docker läuft, aber dein User hat keinen Zugriff oder Docker ist noch nicht bereit" return 1 fi return 0 } container_exists() { docker ps -a --format '{{.Names}}' | grep -qx "$CONTAINER_NAME" } case "$choice" in "󰆼 MySQL starten") if ! ensure_docker_ready; then exit 1 fi if container_exists; then docker start "$CONTAINER_NAME" >/dev/null 2>&1 \ && notify-send "MySQL" "Container gestartet: localhost:$MYSQL_PORT" \ || notify-send "MySQL" "Start fehlgeschlagen" else notify-send "MySQL" "Container existiert nicht. Bitte erst erstellen." fi ;; "󰅖 MySQL stoppen") if ! ensure_docker_ready; then exit 1 fi docker stop "$CONTAINER_NAME" >/dev/null 2>&1 \ && notify-send "MySQL" "Container gestoppt" \ || notify-send "MySQL" "Stop fehlgeschlagen oder Container nicht vorhanden" ;; "󰑓 MySQL neustarten") if ! ensure_docker_ready; then exit 1 fi docker restart "$CONTAINER_NAME" >/dev/null 2>&1 \ && notify-send "MySQL" "Container neugestartet: localhost:$MYSQL_PORT" \ || notify-send "MySQL" "Restart fehlgeschlagen oder Container nicht vorhanden" ;; "󰍉 MySQL Status") kitty -e bash -lc " echo '=== MySQL Container Status ===' echo docker ps -a --filter name=$CONTAINER_NAME echo echo 'Verbindung:' echo 'Host: localhost' echo 'Port: $MYSQL_PORT' echo 'User: root' echo 'Passwort: $MYSQL_ROOT_PASSWORD' echo read -n 1 -s -r -p 'Taste drücken zum Schließen...' " ;; "󰌑 MySQL Logs") kitty -e bash -lc " docker logs --tail 100 $CONTAINER_NAME echo read -n 1 -s -r -p 'Taste drücken zum Schließen...' " ;; "󰒓 MySQL erstellen (neu)") if ! ensure_docker_ready; then exit 1 fi if container_exists; then notify-send "MySQL" "Container existiert bereits" else kitty -e bash -lc ' echo "=== MySQL Container wird erstellt ===" echo if ! systemctl is-active --quiet docker; then echo "Docker-Service läuft nicht." echo read -n 1 -s -r -p "Taste drücken zum Schließen..." exit 1 fi if ! docker version >/dev/null 2>&1; then echo "Docker läuft, aber dein User hat keinen Zugriff auf Docker oder Docker ist noch nicht bereit." echo echo "Prüfe z. B.:" echo " docker version" echo " groups" echo read -n 1 -s -r -p "Taste drücken zum Schließen..." exit 1 fi echo "Image wird geprüft/pulled: '"$MYSQL_IMAGE"'..." docker pull "'"$MYSQL_IMAGE"'" echo echo "Container wird erstellt..." docker run -d \ --name "'"$CONTAINER_NAME"'" \ -e MYSQL_ROOT_PASSWORD="'"$MYSQL_ROOT_PASSWORD"'" \ -p "'"$MYSQL_PORT"':3306" \ -v "'"${CONTAINER_NAME}"'-data:/var/lib/mysql" \ "'"$MYSQL_IMAGE"'" EXIT_CODE=$? echo if [ $EXIT_CODE -eq 0 ]; then echo "MySQL Container erfolgreich erstellt und gestartet." echo echo "Host: localhost" echo "Port: '"$MYSQL_PORT"'" echo "User: root" echo "Passwort: '"$MYSQL_ROOT_PASSWORD"'" notify-send "MySQL" "Container erstellt: localhost:'"$MYSQL_PORT"' (root/root)" else echo "Erstellung fehlgeschlagen." echo echo "Häufige Ursachen:" echo "- Port bereits belegt" echo "- Docker ist noch nicht bereit" echo "- Keine Rechte auf Docker" echo "- Containername existiert schon teilweise" notify-send "MySQL Fehler" "Erstellung fehlgeschlagen - siehe Terminal" fi echo read -n 1 -s -r -p "Taste drücken zum Schließen..." ' fi ;; esac