diff --git a/plugins/apps/functions b/plugins/apps/functions index 1bfbf49a2..2ce635700 100755 --- a/plugins/apps/functions +++ b/plugins/apps/functions @@ -32,21 +32,11 @@ apps_destroy() { fi echo "Destroying $APP (including all add-ons)" - plugn trigger pre-delete "$APP" "$IMAGE_TAG" - local DOKKU_APP_CIDS=$(get_app_container_ids "$APP") - local DOKKU_DOCKER_STOP_TIMEOUT="$(config_get "$APP" DOKKU_DOCKER_STOP_TIMEOUT || true)" - [[ $DOKKU_DOCKER_STOP_TIMEOUT ]] && DOCKER_STOP_TIME_ARG="--time=${DOKKU_DOCKER_STOP_TIMEOUT}" - - if [[ -n $DOKKU_APP_CIDS ]]; then - local cid - for cid in $DOKKU_APP_CIDS; do - # shellcheck disable=SC2086 - docker stop $DOCKER_STOP_TIME_ARG "$cid" > /dev/null || true - docker rm "$cid" > /dev/null || true - done - fi + local DOKKU_SCHEDULER=$(config_get "$APP" DOKKU_SCHEDULER || echo "docker-local") + local REMOVE_CONTAINERS="true" + plugn trigger scheduler-stop "$DOKKU_SCHEDULER" "$APP" "$REMOVE_CONTAINERS" plugn trigger post-delete "$APP" "$IMAGE_TAG" } diff --git a/plugins/apps/post-delete b/plugins/apps/post-delete index be58c6885..18069bfdc 100755 --- a/plugins/apps/post-delete +++ b/plugins/apps/post-delete @@ -13,9 +13,6 @@ app_post_delete() { rm -rf "${DOKKU_ROOT:?}/$APP" > /dev/null fi - # remove all application containers & images - # shellcheck disable=SC2046 - docker rm -f $(docker ps -a --no-trunc | egrep "dokku/${APP}:" | awk '{ print $1 }' | xargs) &>/dev/null || true # shellcheck disable=SC2046 docker rmi $(docker images -q "$IMAGE_REPO" | xargs) &>/dev/null || true } diff --git a/plugins/scheduler-docker-local/README.md b/plugins/scheduler-docker-local/README.md deleted file mode 100644 index e69de29bb..000000000 diff --git a/plugins/scheduler-docker-local/core-post-deploy b/plugins/scheduler-docker-local/core-post-deploy index 61790e665..02120fe86 100755 --- a/plugins/scheduler-docker-local/core-post-deploy +++ b/plugins/scheduler-docker-local/core-post-deploy @@ -4,7 +4,7 @@ source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" source "$PLUGIN_AVAILABLE_PATH/config/functions" scheduler-docker-local-core-post-deploy() { - declare desc="core post-deploy state cleanup" + declare desc="scheduler-docker-local core-post-deploy state cleanup" declare trigger="scheduler-docker-local core-post-deploy" declare APP="$1"; local APP_ROOT="$DOKKU_ROOT/$APP" diff --git a/plugins/scheduler-docker-local/post-delete b/plugins/scheduler-docker-local/post-delete new file mode 100755 index 000000000..59297b3ec --- /dev/null +++ b/plugins/scheduler-docker-local/post-delete @@ -0,0 +1,30 @@ +#!/usr/bin/env bash +set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x +source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/config/functions" + +scheduler-docker-local-post-delete() { + declare desc="scheduler-docker-local post-delete plugin trigger" + declare trigger="scheduler-docker-local post-delete" + declare APP="$1" + + local DOKKU_SCHEDULER=$(config_get "$APP" DOKKU_SCHEDULER || echo "docker-local") + if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then + return + fi + + local IMAGE_REPO=$(get_app_image_repo "$APP") + + # remove all application containers & images + # shellcheck disable=SC2046 + local DOKKU_APP_CIDS=$(docker ps -a --no-trunc | egrep "dokku/${APP}:" | awk '{ print $1 }' | xargs) + if [[ -n "$DOKKU_APP_CIDS" ]]; then + # shellcheck disable=SC2086 + docker rm -f $DOKKU_APP_CIDS &>/dev/null || true + fi + + # shellcheck disable=SC2046 + docker rmi $(docker images -q "$IMAGE_REPO" | xargs) &>/dev/null || true +} + +scheduler-docker-local-post-delete "$@" diff --git a/plugins/scheduler-docker-local/scheduler-stop b/plugins/scheduler-docker-local/scheduler-stop index 7a95ece0d..466a1c40e 100755 --- a/plugins/scheduler-docker-local/scheduler-stop +++ b/plugins/scheduler-docker-local/scheduler-stop @@ -1,11 +1,12 @@ #!/usr/bin/env bash set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" +source "$PLUGIN_AVAILABLE_PATH/config/functions" scheduler-docker-local-scheduler-stop() { declare desc="scheduler-docker-local scheduler-stop plugin trigger" declare trigger="scheduler-docker-local scheduler-stop" - declare DOKKU_SCHEDULER="$1" APP="$2" + declare DOKKU_SCHEDULER="$1" APP="$2" REMOVE_CONTAINERS="$3" if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then return @@ -16,8 +17,19 @@ scheduler-docker-local-scheduler-stop() { [[ -n "$DOKKU_DOCKER_STOP_TIMEOUT" ]] && DOCKER_STOP_TIME_ARG="--time=${DOKKU_DOCKER_STOP_TIMEOUT}" - # shellcheck disable=SC2086 - docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS > /dev/null || true + if [[ -n "$DOKKU_APP_RUNNING_CONTAINER_IDS" ]]; then + # shellcheck disable=SC2086 + docker stop $DOCKER_STOP_TIME_ARG $DOKKU_APP_RUNNING_CONTAINER_IDS > /dev/null || true + fi + + if [[ "$REMOVE_CONTAINERS" == "true" ]]; then + local DOKKU_APP_CIDS=$(get_app_container_ids "$APP") + + if [[ -n "$DOKKU_APP_CIDS" ]]; then + # shellcheck disable=SC2086 + docker rm -f $DOKKU_APP_CIDS > /dev/null || true + fi + fi }