mirror of
https://github.com/dokku/dokku.git
synced 2025-12-25 16:29:30 +01:00
This will require changes in community plugins to properly add the specified labels to intermediate containers. Closes #3515
70 lines
2.1 KiB
Bash
Executable File
70 lines
2.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|
|
|
apps_create() {
|
|
declare desc="verifies app name and creates an app"
|
|
declare APP="$1"
|
|
is_valid_app_name "$APP"
|
|
|
|
apps_exists "$APP" >/dev/null 2>&1 && dokku_log_fail "Name is already taken"
|
|
|
|
mkdir -p "$DOKKU_ROOT/$APP"
|
|
dokku_log_info1_quiet "Creating $APP... done"
|
|
plugn trigger post-create "$APP"
|
|
}
|
|
|
|
apps_destroy() {
|
|
declare desc="destroys an app"
|
|
declare APP="$1"
|
|
verify_app_name "$APP"
|
|
local IMAGE_TAG=$(get_running_image_tag "$APP")
|
|
|
|
if [[ -z "$DOKKU_APPS_FORCE_DELETE" ]]; then
|
|
dokku_log_warn "WARNING: Potentially Destructive Action"
|
|
dokku_log_warn "This command will destroy $APP (including all add-ons)."
|
|
dokku_log_warn "To proceed, type \"$APP\""
|
|
echo ""
|
|
|
|
read -rp "> " app_name
|
|
if [[ "$app_name" != "$APP" ]]; then
|
|
dokku_log_fail "Confirmation did not match $APP. Aborted."
|
|
fi
|
|
fi
|
|
|
|
echo "Destroying $APP (including all add-ons)"
|
|
plugn trigger pre-delete "$APP" "$IMAGE_TAG"
|
|
|
|
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
|
local REMOVE_CONTAINERS="true"
|
|
plugn trigger scheduler-stop "$DOKKU_SCHEDULER" "$APP" "$REMOVE_CONTAINERS"
|
|
plugn trigger scheduler-post-delete "$DOKKU_SCHEDULER" "$APP" "$IMAGE_TAG"
|
|
plugn trigger post-delete "$APP" "$IMAGE_TAG"
|
|
docker_cleanup "$APP" "true"
|
|
}
|
|
|
|
apps_exists() {
|
|
declare desc="checks if an app exists"
|
|
declare APP="$1"
|
|
is_valid_app_name "$APP"
|
|
|
|
[[ -d "$DOKKU_ROOT/$APP" ]] || return 1
|
|
}
|
|
|
|
apps_maybe_create() {
|
|
declare desc="creates an app dir if allowed"
|
|
declare APP="$1"
|
|
|
|
if ! apps_exists "$APP" >/dev/null 2>&1; then
|
|
DOKKU_GLOBAL_DISABLE_AUTOCREATE="$(config_get --global DOKKU_DISABLE_APP_AUTOCREATION || true)"
|
|
if [[ "$DOKKU_GLOBAL_DISABLE_AUTOCREATE" == "true" ]]; then
|
|
dokku_log_warn "App auto-creation disabled."
|
|
dokku_log_fail " ! Re-enable app auto-creation or create an app with 'dokku apps:create ${APP}'"
|
|
else
|
|
suppress_output apps_create "$APP"
|
|
fi
|
|
fi
|
|
}
|