Inital Comit Upload Config Files
This commit is contained in:
164
scripts/dev/mysql-menu.sh
Executable file
164
scripts/dev/mysql-menu.sh
Executable file
@@ -0,0 +1,164 @@
|
||||
#!/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
|
||||
Reference in New Issue
Block a user