feat: add Pi monitoring stack with deployment scripts and architecture documentation
This commit is contained in:
64
setup/pi-monitoring/upgrade_stack.sh
Executable file
64
setup/pi-monitoring/upgrade_stack.sh
Executable file
@@ -0,0 +1,64 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
||||
# shellcheck source=./lib.sh
|
||||
source "$SCRIPT_DIR/lib.sh"
|
||||
|
||||
ENV_FILE="$SCRIPT_DIR/stack.env"
|
||||
AUTO_YES=false
|
||||
PRUNE_IMAGES=false
|
||||
|
||||
usage() {
|
||||
cat <<USAGE
|
||||
Usage: $(basename "$0") [options]
|
||||
|
||||
Upgrade stack images and recreate containers with current compose config.
|
||||
|
||||
Options:
|
||||
--env-file=PATH Env file path (default: setup/pi-monitoring/stack.env)
|
||||
--prune Prune dangling Docker images after upgrade
|
||||
--yes, -y Skip confirmation prompt
|
||||
--help, -h Show help
|
||||
USAGE
|
||||
}
|
||||
|
||||
for arg in "$@"; do
|
||||
case "$arg" in
|
||||
--env-file=*) ENV_FILE="${arg#*=}" ;;
|
||||
--prune) PRUNE_IMAGES=true ;;
|
||||
--yes|-y) AUTO_YES=true ;;
|
||||
--help|-h) usage; exit 0 ;;
|
||||
*) log_error "Unknown argument: $arg"; usage; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
|
||||
require_cmd docker
|
||||
load_stack_env "$ENV_FILE"
|
||||
compose_file_path="$(compose_file)"
|
||||
|
||||
if ! confirm_action "Upgrade monitoring stack now?" "$AUTO_YES"; then
|
||||
log_info "Cancelled"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
log_info "Pulling latest images..."
|
||||
docker compose \
|
||||
--project-name "$COMPOSE_PROJECT_NAME" \
|
||||
--env-file "$ENV_FILE" \
|
||||
-f "$compose_file_path" \
|
||||
pull
|
||||
|
||||
log_info "Recreating services..."
|
||||
docker compose \
|
||||
--project-name "$COMPOSE_PROJECT_NAME" \
|
||||
--env-file "$ENV_FILE" \
|
||||
-f "$compose_file_path" \
|
||||
up -d --remove-orphans
|
||||
|
||||
if [[ "$PRUNE_IMAGES" == "true" ]]; then
|
||||
log_info "Pruning dangling images..."
|
||||
docker image prune -f
|
||||
fi
|
||||
|
||||
log_success "Upgrade complete"
|
||||
Reference in New Issue
Block a user