Files
Development/SCRIPTS/docker.sh
T
2026-07-13 20:17:59 +02:00

121 lines
2.4 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
RED="\e[31m"
GREEN="\e[32m"
YELLOW="\e[33m"
BLUE="\e[34m"
RESET="\e[0m"
log_info() { echo -e "${BLUE}[INFO]${RESET} $1"; }
log_success() { echo -e "${GREEN}[OK]${RESET} $1"; }
log_warn() { echo -e "${YELLOW}[WARN]${RESET} $1"; }
log_error() { echo -e "${RED}[ERROR]${RESET} $1"; }
trap 'log_error "Fehler in Zeile $LINENO"' ERR
if [[ "$EUID" -ne 0 ]]; then
log_error "Script muss als root laufen!"
exit 1
fi
exec 9>/var/lock/docker-control.lock
flock -n 9 || { log_error "Script läuft bereits!"; exit 1; }
docker_up() {
local CONTAINER="$1"
if [[ "$CONTAINER" == "all" ]]; then
log_info "Starte alle gestoppten Container"
docker start $(docker ps -aq)
else
log_info "Starte Container: $CONTAINER"
docker start "$CONTAINER"
fi
log_success "Start abgeschlossen"
}
docker_stop() {
local CONTAINER="$1"
if [[ "$CONTAINER" == "all" ]]; then
log_info "Stoppe alle Container"
docker stop $(docker ps -q)
else
log_info "Stoppe Container: $CONTAINER"
docker stop "$CONTAINER"
fi
log_success "Stop abgeschlossen"
}
docker_restart() {
local CONTAINER="$1"
if [[ "$CONTAINER" == "all" ]]; then
log_info "Restart aller Container"
docker restart $(docker ps -q)
else
log_info "Restart Container: $CONTAINER"
docker restart "$CONTAINER"
fi
log_success "Restart abgeschlossen"
}
docker_remove() {
local CONTAINER="$1"
if [[ "$CONTAINER" == "all" ]]; then
log_info "Loesche aller Container"
docker stop $(docker ps -q)
docker rm $(docker ps -q)
else
log_info "Loesche Container: $CONTAINER"
docker stop "$CONTAINER"
docker rm "$CONTAINER"
fi
log_success "Loeschen abgeschlossen"
}
########################################
# CLI
########################################
ACTION="${1:-}"
TARGET="${2:-}"
case "$ACTION" in
up)
docker_up "$TARGET"
;;
stop)
docker_stop "$TARGET"
;;
restart)
docker_restart "$TARGET"
;;
remove)
docker_remove "$TARGET"
;;
*)
echo "Usage:"
echo " $0 up <container|all>"
echo " $0 stop <container|all>"
echo " $0 remove <container|all>"
echo " $0 restart <container|all>"
exit 1
;;
esac