Add stack-deploy.sh + envparse.py: safe env loading via Python for all stacks
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/push/woodpecker Pipeline was successful
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
#!/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"
|
||||
Reference in New Issue
Block a user