Files
compose-files/deploy/stack-deploy.sh
T
2026-06-22 22:57:51 -07:00

25 lines
807 B
Bash
Executable File

#!/usr/bin/env bash
# stack-deploy.sh - Safe Docker Swarm stack deployer
# Handles special chars in .env (||, backticks, %, *) via Python
set -euo pipefail
STACK="${1:?Usage: stack-deploy.sh <stack-name>}"
DIR="/volume1/docker/compose-files"
YAML="$DIR/${STACK}.yaml"
ENVFILE="$DIR/${STACK}.env"
PY="/volume1/docker/compose-files/deploy/envparse.py"
[ -f "$YAML" ] || { echo "ERROR: $YAML not found"; exit 1; }
echo "==> Deploying stack: $STACK"
if [ -f "$ENVFILE" ]; then
echo " Loading: $ENVFILE"
eval "$(python3 $PY export "$ENVFILE")"
VARS="$(python3 $PY vars "$ENVFILE")"
echo " Vars: $VARS"
envsubst "$VARS" < "$YAML" \
| python3 $PY strip \
| docker stack deploy -c - "$STACK"
else
echo " No env file"
docker stack deploy -c "$YAML" "$STACK"
fi
echo "==> Done: $STACK"