diff --git a/docs/development/plugin-creation.md b/docs/development/plugin-creation.md index 0286d8e69..f9d2be9ce 100644 --- a/docs/development/plugin-creation.md +++ b/docs/development/plugin-creation.md @@ -194,7 +194,7 @@ Avoid copying files from running containers as these files may change over time. ```shell source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions" -local TMP_FILE=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") +local TMP_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_FILE' >/dev/null" RETURN INT TERM local IMAGE_TAG="$(get_running_image_tag "$APP")" diff --git a/dokku b/dokku index 10d61baae..a163fd761 100755 --- a/dokku +++ b/dokku @@ -56,6 +56,7 @@ export DOKKU_SYSTEM_USER=${DOKKU_SYSTEM_USER:="dokku"} export DOKKU_API_VERSION=1 export DOKKU_NOT_IMPLEMENTED_EXIT=10 export DOKKU_VALID_EXIT=0 +export DOKKU_PID="$BASHPID" export DOKKU_LOGS_DIR=${DOKKU_LOGS_DIR:="/var/log/dokku"} export DOKKU_EVENTS_LOGFILE=${DOKKU_EVENTS_LOGFILE:="$DOKKU_LOGS_DIR/events.log"} diff --git a/plugins/app-json/internal-functions b/plugins/app-json/internal-functions index c130f37ef..5fed09bce 100755 --- a/plugins/app-json/internal-functions +++ b/plugins/app-json/internal-functions @@ -8,7 +8,7 @@ source "$PLUGIN_AVAILABLE_PATH/ps/functions" get_phase_script() { declare desc="extracts app.json from app image and returns the appropriate json key/value" declare IMAGE_TAG="$1" PHASE_SCRIPT_KEY="$2" - local APP_JSON_FILE=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local APP_JSON_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$APP_JSON_FILE' >/dev/null" RETURN INT TERM copy_from_image "$IMAGE" "app.json" "$APP_JSON_FILE" 2>/dev/null || true diff --git a/plugins/certs/subcommands/add b/plugins/certs/subcommands/add index 03f43f950..2cc7938c8 100755 --- a/plugins/certs/subcommands/add +++ b/plugins/certs/subcommands/add @@ -42,7 +42,7 @@ certs_set() { # importing from file true elif is_tar_import; then - local CERTS_SET_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local CERTS_SET_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") pushd "$CERTS_SET_TMP_WORK_DIR" &>/dev/null trap "popd &>/dev/null || true; rm -rf '$CERTS_SET_TMP_WORK_DIR' >/dev/null" RETURN tar xvf - <&0 diff --git a/plugins/certs/subcommands/generate b/plugins/certs/subcommands/generate index 7456481b1..9a4e9a0e4 100755 --- a/plugins/certs/subcommands/generate +++ b/plugins/certs/subcommands/generate @@ -13,7 +13,7 @@ certs_generate_cmd() { local APP_SSL_PATH="$DOKKU_ROOT/$APP/tls" if [[ ! -f "$APP_SSL_PATH/server.key" ]] && [[ ! -f "$APP_SSL_PATH/server.crt" ]]; then - local CERTS_GENERATE_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local CERTS_GENERATE_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") pushd "$CERTS_GENERATE_TMP_WORK_DIR" >/dev/null trap "popd &>/dev/null || true; rm -rf '$CERTS_GENERATE_TMP_WORK_DIR' >/dev/null" INT TERM EXIT diff --git a/plugins/common/functions b/plugins/common/functions index 663e1e155..2d6c87f34 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -390,7 +390,7 @@ copy_from_image() { fi fi - TMP_FILE_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + TMP_FILE_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_FILE_COMMAND_OUTPUT' >/dev/null 2>&1 || true" RETURN local CID=$("$DOCKER_BIN" create "${DOCKER_CREATE_LABEL_ARGS[@]}" $DOKKU_GLOBAL_RUN_ARGS "$IMAGE") @@ -1029,7 +1029,7 @@ release_advisory_lock() { suppress_output() { declare desc="suppress all output from a given command unless there is an error" local TMP_COMMAND_OUTPUT - TMP_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + TMP_COMMAND_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_COMMAND_OUTPUT' >/dev/null" RETURN "$@" >"$TMP_COMMAND_OUTPUT" 2>&1 || { diff --git a/plugins/git/functions b/plugins/git/functions index 4f19b65a4..c31dc5236 100755 --- a/plugins/git/functions +++ b/plugins/git/functions @@ -31,7 +31,7 @@ git_build_app_repo() { verify_app_name "$APP" # clean up after ourselves - local GIT_BUILD_APP_REPO_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local GIT_BUILD_APP_REPO_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$GIT_BUILD_APP_REPO_TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT local TMP_TAG="dokku/$REV" diff --git a/plugins/nginx-vhosts/functions b/plugins/nginx-vhosts/functions index 5254394da..ce3642cf6 100755 --- a/plugins/nginx-vhosts/functions +++ b/plugins/nginx-vhosts/functions @@ -300,7 +300,7 @@ nginx_build_config() { done local PROXY_UPSTREAM_PORTS="$(echo "$PROXY_UPSTREAM_PORTS" | xargs)" - local NGINX_BUILD_CONFIG_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local NGINX_BUILD_CONFIG_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") local NGINX_CONF=$(mktemp --tmpdir="${NGINX_BUILD_CONFIG_TMP_WORK_DIR}" "nginx.conf.XXXX") local CUSTOM_NGINX_TEMPLATE="$NGINX_BUILD_CONFIG_TMP_WORK_DIR/$NGINX_TEMPLATE_NAME" # shellcheck disable=SC2086 diff --git a/plugins/nginx-vhosts/internal-functions b/plugins/nginx-vhosts/internal-functions index 587a2722f..dac6f6a5d 100755 --- a/plugins/nginx-vhosts/internal-functions +++ b/plugins/nginx-vhosts/internal-functions @@ -27,7 +27,7 @@ nginx_vhosts_is_valid_nginx_config_func() { declare desc="checks if an app has a valid nginx config" declare APP="$1" local VALIDATE_TEMPLATE="$PLUGIN_AVAILABLE_PATH/nginx-vhosts/templates/validate.conf.sigil" - local TMP_OUTPUT=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local TMP_OUTPUT=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_OUTPUT' >/dev/null" RETURN INT TERM EXIT sigil -f "$VALIDATE_TEMPLATE" NGINX_CONF="$DOKKU_ROOT/$APP/nginx.conf" | cat -s >"$TMP_OUTPUT" diff --git a/plugins/ps/functions b/plugins/ps/functions index 00f1f6a9e..d3428897d 100755 --- a/plugins/ps/functions +++ b/plugins/ps/functions @@ -71,7 +71,7 @@ generate_scale_file() { if [[ ! -f $DOKKU_SCALE_FILE ]]; then dokku_log_info1_quiet "DOKKU_SCALE file not found in app image. Generating one based on Procfile..." - local GENERATE_SCALE_FILE_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local GENERATE_SCALE_FILE_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$GENERATE_SCALE_FILE_TMP_WORK_DIR' >/dev/null" RETURN if [[ -f $DOKKU_PROCFILE ]]; then diff --git a/plugins/scheduler-docker-local/check-deploy b/plugins/scheduler-docker-local/check-deploy index e2840e578..c43e19ae9 100755 --- a/plugins/scheduler-docker-local/check-deploy +++ b/plugins/scheduler-docker-local/check-deploy @@ -80,7 +80,7 @@ scheduler-docker-local-check-deploy() { # use this number of retries for checks local ATTEMPTS="${DOKKU_CHECKS_ATTEMPTS:-5}" - local CHECK_DEPLOY_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local CHECK_DEPLOY_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") local CHECKS_FILENAME=${CHECK_DEPLOY_TMP_WORK_DIR}/CHECKS local IMAGE_TAG="$(get_running_image_tag "$APP")" local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG") diff --git a/plugins/scheduler-docker-local/scheduler-inspect b/plugins/scheduler-docker-local/scheduler-inspect index 5353f3291..43263168f 100755 --- a/plugins/scheduler-docker-local/scheduler-inspect +++ b/plugins/scheduler-docker-local/scheduler-inspect @@ -13,7 +13,7 @@ scheduler-docker-local-scheduler-inspect() { return fi - local TMP_INSPECT_CMD=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local TMP_INSPECT_CMD=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_INSPECT_CMD' >/dev/null" RETURN INT TERM EXIT cat >"$TMP_INSPECT_CMD" </dev/null" RETURN INT TERM EXIT while read -r key; do diff --git a/plugins/ssh-keys/subcommands/add b/plugins/ssh-keys/subcommands/add index b6fa76bce..e0dcde14b 100755 --- a/plugins/ssh-keys/subcommands/add +++ b/plugins/ssh-keys/subcommands/add @@ -10,7 +10,7 @@ add_keys() { [[ "$1" == "$cmd" ]] && shift 1 declare NAME="$1" KEY_FILE="$2" local TMP_KEY_FILE - TMP_KEY_FILE=$(mktemp "/tmp/dokku-${FUNCNAME[0]}.XXXX") + TMP_KEY_FILE=$(mktemp "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TMP_KEY_FILE' >/dev/null" RETURN INT TERM EXIT if [[ -n "$KEY_FILE" ]]; then diff --git a/plugins/tar/functions b/plugins/tar/functions index c399ecc52..3a7923549 100755 --- a/plugins/tar/functions +++ b/plugins/tar/functions @@ -11,7 +11,7 @@ tar_build() { shift 1 # clean up after ourselves - local TAR_BUILD_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${FUNCNAME[0]}.XXXX") + local TAR_BUILD_TMP_WORK_DIR=$(mktemp -d "/tmp/dokku-${DOKKU_PID}-${FUNCNAME[0]}.XXXX") trap "rm -rf '$TAR_BUILD_TMP_WORK_DIR' >/dev/null" RETURN INT TERM EXIT # extract tar file