Files
dokku/plugins/docker-options/docker-args-deploy
Jose Diaz-Gonzalez 12648e0bc6 feat: remove --restart docker arguments when not running deploy-phase containers
This works around cases where developers may inadvertently add this to `run` containers which _should not_ have the `--restart` flag. Run containers are one-off, and if they fail, then they should fail hard.
2024-08-25 23:33:49 -04:00

87 lines
1.7 KiB
Bash
Executable File

#!/usr/bin/env bash
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
trigger-docker-options-docker-args() {
declare desc="docker args plugin trigger"
declare trigger="$0"
declare APP="$1" IMAGE_SOURCE_TYPE="$2"
local STDIN=$(cat)
case "$0" in
*docker-args-build)
local PHASE=BUILD
;;
*docker-args-deploy)
local PHASE=DEPLOY
;;
*docker-args-run)
local PHASE=RUN
;;
esac
local FILE_PREFIX="DOCKER_OPTIONS_"
local PHASE_FILE_PATH="${DOKKU_ROOT}/${APP}/${FILE_PREFIX}${PHASE}"
local output=""
if [[ -f "$PHASE_FILE_PATH" ]]; then
local DONE=false
until $DONE; do
local line
read -r line || local DONE=true
[[ -z "$line" ]] && continue
case "$line" in
\#*)
continue
;;
--restart*)
if [[ "$PHASE" == "deploy" ]]; then
local output="$output $line"
fi
continue
;;
*)
case "$IMAGE_SOURCE_TYPE" in
dockerfile | nixpacks)
case "$line" in
--link* | -v* | --volume*)
continue
;;
*)
local output="$output $line"
;;
esac
;;
herokuish)
case "$line" in
--file* | --build-args*)
continue
;;
*)
local output="$output $line"
;;
esac
;;
*)
local output="$output $line"
;;
esac
;;
esac
done <"$PHASE_FILE_PATH"
fi
echo -n "$STDIN$output"
}
trigger-docker-options-docker-args "$@"