As deployment tasks can fail due to non-dokku related issues, moving them to post-deploy will ensure that dokku does not accidentally orphan applications. Closes #2367
24 lines
1.1 KiB
Bash
Executable File
24 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
|
|
cleanup_container_state() {
|
|
declare desc="core post-deploy state cleanup"
|
|
local trigger="core-post-deploy cleanup_container_state"
|
|
local APP="$1"; local PROCTYPES="$(egrep -v "^#" "$DOKKU_ROOT/$APP/DOKKU_SCALE" | awk -F '=' '{ print $1 }' | xargs)"
|
|
local CONTAINER_FILES="$(find "$DOKKU_ROOT/$APP" -maxdepth 1 -name "CONTAINER.*" -printf "%f\n" 2>/dev/null | sort -t . -k 3 -n | xargs)"
|
|
|
|
local CONTAINER_FILE
|
|
for CONTAINER_FILE in $CONTAINER_FILES; do
|
|
local CONTAINER_TYPE="$(awk -F '.' '{ print $2 }' <<< "$CONTAINER_FILE")"
|
|
if [[ "$(is_val_in_list "$CONTAINER_TYPE" "$PROCTYPES" " ")" == "false" ]]; then
|
|
dokku_log_info1 "Container type ($CONTAINER_TYPE) is no longer defined. Removing state"
|
|
local IP_FILE="${CONTAINER_FILE//CONTAINER/IP}"
|
|
local PORT_FILE="${CONTAINER_FILE//CONTAINER/PORT}"
|
|
rm -f "$DOKKU_ROOT/$APP/$CONTAINER_FILE" "$DOKKU_ROOT/$APP/$IP_FILE" "$DOKKU_ROOT/$APP/$PORT_FILE"
|
|
fi
|
|
done
|
|
}
|
|
|
|
cleanup_container_state "$@"
|