cleanup container state files when proc type is removed from app. closes #2230
This commit is contained in:
@@ -78,25 +78,3 @@ execute_script() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
exec_app_json_scripts() {
|
|
||||||
declare desc="core app.json scripts execution"
|
|
||||||
local trigger="$0 app_json_scripts"
|
|
||||||
local APP="$1"
|
|
||||||
|
|
||||||
case "$0" in
|
|
||||||
*pre-deploy)
|
|
||||||
local IMAGE_TAG="$2"
|
|
||||||
local PHASE_SCRIPT_KEY="predeploy"
|
|
||||||
;;
|
|
||||||
*post-deploy)
|
|
||||||
local IMAGE_TAG="$4"
|
|
||||||
local PHASE_SCRIPT_KEY="postdeploy"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
|
|
||||||
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
|
|
||||||
}
|
|
||||||
|
|
||||||
exec_app_json_scripts "$@"
|
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
exec-app-json-scripts
|
|
||||||
34
plugins/00_dokku-standard/post-deploy
Executable file
34
plugins/00_dokku-standard/post-deploy
Executable file
@@ -0,0 +1,34 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
|
||||||
|
|
||||||
|
exec_app_json_scripts() {
|
||||||
|
declare desc="core app.json scripts execution"
|
||||||
|
local trigger="pre-deploy app_json_scripts"
|
||||||
|
local APP="$1"; local IMAGE_TAG="$4"; local PHASE_SCRIPT_KEY="postdeploy"
|
||||||
|
|
||||||
|
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
|
||||||
|
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
|
||||||
|
}
|
||||||
|
|
||||||
|
cleanup_container_state() {
|
||||||
|
declare desc="core post-deploy state cleanup"
|
||||||
|
local trigger="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" | 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
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_app_json_scripts "$@"
|
||||||
|
cleanup_container_state "$@"
|
||||||
@@ -1 +0,0 @@
|
|||||||
exec-app-json-scripts
|
|
||||||
15
plugins/00_dokku-standard/pre-deploy
Executable file
15
plugins/00_dokku-standard/pre-deploy
Executable file
@@ -0,0 +1,15 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/00_dokku-standard/exec-app-json-scripts"
|
||||||
|
|
||||||
|
exec_app_json_scripts() {
|
||||||
|
declare desc="core app.json scripts execution"
|
||||||
|
local trigger="pre-deploy app_json_scripts"
|
||||||
|
local APP="$1"; local IMAGE_TAG="$2"; local PHASE_SCRIPT_KEY="predeploy"
|
||||||
|
|
||||||
|
dokku_log_info1 "Attempting to run scripts.dokku.$PHASE_SCRIPT_KEY from app.json (if defined)"
|
||||||
|
execute_script "$APP" "$IMAGE_TAG" "$PHASE_SCRIPT_KEY"
|
||||||
|
}
|
||||||
|
|
||||||
|
exec_app_json_scripts "$@"
|
||||||
@@ -752,3 +752,17 @@ strip_inline_comments() {
|
|||||||
|
|
||||||
echo "$stripped_line"
|
echo "$stripped_line"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
is_val_in_list() {
|
||||||
|
declare desc="return true if value ($1) is in list ($2) separated by delimiter ($3); delimiter defaults to comma"
|
||||||
|
local value="$1" list="$2" delimiter="${3:-,}"
|
||||||
|
local IFS="$delimiter" val_in_list=false
|
||||||
|
|
||||||
|
for val in $list; do
|
||||||
|
if [[ "$val" == "$value" ]]; then
|
||||||
|
val_in_list=true
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
echo "$val_in_list"
|
||||||
|
}
|
||||||
|
|||||||
@@ -6,9 +6,10 @@ named_containers_post_deploy() {
|
|||||||
declare desc="names deployed app container is consistent manner"
|
declare desc="names deployed app container is consistent manner"
|
||||||
local trigger="named_containers_post_deploy"
|
local trigger="named_containers_post_deploy"
|
||||||
local APP="$1"; local APP_ROOT="$DOKKU_ROOT/$APP"
|
local APP="$1"; local APP_ROOT="$DOKKU_ROOT/$APP"
|
||||||
[[ -z $(stat -t "$APP_ROOT"/CONTAINER.* 2>/dev/null) ]] && exit 0
|
|
||||||
local container
|
local container
|
||||||
for container in "$APP_ROOT"/CONTAINER.*; do
|
|
||||||
|
shopt -s nullglob
|
||||||
|
for container in $APP_ROOT/CONTAINER.*; do
|
||||||
local DYNO=$(echo "$container" | sed -r 's/.*CONTAINER\.(.*)/\1/') || true
|
local DYNO=$(echo "$container" | sed -r 's/.*CONTAINER\.(.*)/\1/') || true
|
||||||
local NAME="$APP.$DYNO"
|
local NAME="$APP.$DYNO"
|
||||||
local CURRENT_CONTAINER_ID="$(< "$container")"
|
local CURRENT_CONTAINER_ID="$(< "$container")"
|
||||||
@@ -29,9 +30,12 @@ named_containers_post_deploy() {
|
|||||||
fi
|
fi
|
||||||
local ID=$(cat "$container")
|
local ID=$(cat "$container")
|
||||||
local CURRENT_NAME=$(docker inspect -f '{{.Name}}' "$ID" | tr -d /)
|
local CURRENT_NAME=$(docker inspect -f '{{.Name}}' "$ID" | tr -d /)
|
||||||
dokku_log_info2_quiet "renaming container (${ID:0:12}) $CURRENT_NAME to $NAME"
|
if [[ -n "$CURRENT_NAME" ]]; then
|
||||||
docker rename "$CURRENT_NAME" "$NAME" > /dev/null
|
dokku_log_info2_quiet "renaming container (${ID:0:12}) $CURRENT_NAME to $NAME"
|
||||||
|
docker rename "$CURRENT_NAME" "$NAME" > /dev/null
|
||||||
|
fi
|
||||||
done
|
done
|
||||||
|
shopt -u nullglob
|
||||||
}
|
}
|
||||||
|
|
||||||
named_containers_post_deploy "$@"
|
named_containers_post_deploy "$@"
|
||||||
|
|||||||
Reference in New Issue
Block a user