25 lines
807 B
Bash
Executable File
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"
|