deloy Script erstellt
This commit is contained in:
parent
4bd0cb2bd0
commit
c5cb20a5bc
15
scripts/README.md
Normal file
15
scripts/README.md
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
deploy.sh war als kleiner, dummer Helfer gedacht, der dir zwei nervige Dinge abnimmt:
|
||||||
|
|
||||||
|
Stacks reproduzierbar aus dem Repo nach /srv ausrollen (ohne Copy-Paste-Orgie)
|
||||||
|
|
||||||
|
Updates standardisiert fahren (pull + up, optional healthcheck)
|
||||||
|
|
||||||
|
Also kein „Kubernetes für Arme“, sondern ein Skript, das deinen Mini-Standard automatisiert, wenn du willst.
|
||||||
|
|
||||||
|
Typische Use-Cases bei dir
|
||||||
|
|
||||||
|
Du änderst docker-compose.yml im Repo und willst es sauber nach /srv/<stack> übernehmen.
|
||||||
|
|
||||||
|
Du willst auf dem Server „alle Stacks updaten“: Images pullen, Container neu starten, kurz prüfen.
|
||||||
|
|
||||||
|
Du willst einen neuen Server aufsetzen: Repo klonen, .env anlegen, deploy laufen lassen, fertig.
|
||||||
69
scripts/deploy.sh
Normal file
69
scripts/deploy.sh
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -euo pipefail
|
||||||
|
|
||||||
|
REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||||
|
STACKS_DIR="$REPO_ROOT/stacks"
|
||||||
|
TARGET_ROOT="/srv"
|
||||||
|
|
||||||
|
usage() {
|
||||||
|
echo "Usage:"
|
||||||
|
echo " $0 <stackname> Deploy one stack (e.g. n8n)"
|
||||||
|
echo " $0 --all Deploy all stacks"
|
||||||
|
echo " $0 --list List stacks"
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
list_stacks() {
|
||||||
|
find "$STACKS_DIR" -maxdepth 1 -mindepth 1 -type d -printf "%f\n" | sort
|
||||||
|
}
|
||||||
|
|
||||||
|
deploy_stack() {
|
||||||
|
local stack="$1"
|
||||||
|
local src="$STACKS_DIR/$stack"
|
||||||
|
local dst="$TARGET_ROOT/$stack"
|
||||||
|
|
||||||
|
if [[ ! -d "$src" ]]; then
|
||||||
|
echo "ERROR: Stack '$stack' not found in $STACKS_DIR"
|
||||||
|
exit 2
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$dst" ]]; then
|
||||||
|
echo "ERROR: Target dir '$dst' does not exist. Create it first:"
|
||||||
|
echo " sudo mkdir -p $dst && sudo chown -R $USER:$USER $dst"
|
||||||
|
exit 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "==> Deploying stack: $stack"
|
||||||
|
cp "$src/docker-compose.yml" "$dst/docker-compose.yml"
|
||||||
|
|
||||||
|
# safety hint only
|
||||||
|
if [[ -f "$src/.env.example" && ! -f "$dst/.env" ]]; then
|
||||||
|
echo "NOTE: $dst/.env is missing. Create it from .env.example before starting."
|
||||||
|
fi
|
||||||
|
|
||||||
|
( cd "$dst" && docker compose pull && docker compose up -d )
|
||||||
|
( cd "$dst" && docker compose ps )
|
||||||
|
echo
|
||||||
|
}
|
||||||
|
|
||||||
|
main() {
|
||||||
|
cd "$REPO_ROOT"
|
||||||
|
git pull --ff-only
|
||||||
|
|
||||||
|
if [[ "${1:-}" == "--list" ]]; then
|
||||||
|
list_stacks
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ "${1:-}" == "--all" ]]; then
|
||||||
|
while read -r s; do
|
||||||
|
deploy_stack "$s"
|
||||||
|
done < <(list_stacks)
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
[[ $# -eq 1 ]] || usage
|
||||||
|
deploy_stack "$1"
|
||||||
|
}
|
||||||
|
|
||||||
|
main "$@"
|
||||||
Loading…
Reference in New Issue
Block a user