mirror of
https://github.com/dokku/dokku.git
synced 2025-12-29 00:25:08 +01:00
This change allows operators to specify a DOCKER_BIN environment variable. This will specify a binary to run when executing docker, which is useful in cases where the 'docker' command being run must be modified in a way that would otherwise be invasive to Dokku, but minimalistic if done within a wrapper.
49 lines
1.8 KiB
Bash
Executable File
49 lines
1.8 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -eo pipefail
|
|
[[ $DOKKU_TRACE ]] && set -x
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/property-functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|
|
|
scheduler-docker-local-pre-deploy() {
|
|
declare desc="scheduler-docker-local pre-deploy plugin trigger"
|
|
declare trigger="scheduler-docker-local pre-deploy"
|
|
declare APP="$1" IMAGE_TAG="$2"
|
|
local IMAGE DISABLE_CHOWN DOCKER_ARGS DOKKU_APP_TYPE DOKKU_APP_USER APP_PATHS CONTAINER_PATHS
|
|
declare -a ARG_ARRAY
|
|
|
|
local DOKKU_SCHEDULER=$(get_app_scheduler "$APP")
|
|
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
|
|
return
|
|
fi
|
|
|
|
IMAGE=$(get_app_image_name "$APP" "$IMAGE_TAG")
|
|
|
|
DOKKU_APP_TYPE=$(config_get "$APP" DOKKU_APP_TYPE || true)
|
|
DOKKU_APP_USER=$(config_get "$APP" DOKKU_APP_USER || true)
|
|
DOKKU_APP_USER=${DOKKU_APP_USER:="herokuishuser"}
|
|
APP_PATHS=$(dokku --quiet storage:list "$APP" || true)
|
|
|
|
if [[ -n "$APP_PATHS" ]]; then
|
|
CONTAINER_PATHS=$(echo "$APP_PATHS" | awk -F ':' '{ print $2 }' | xargs)
|
|
DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG")
|
|
# strip --restart args from DOCKER_ARGS
|
|
DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
|
|
eval "ARG_ARRAY=($DOCKER_ARGS)"
|
|
fi
|
|
|
|
if [[ "$DOKKU_APP_TYPE" != "herokuish" ]] || [[ -z "$CONTAINER_PATHS" ]]; then
|
|
return
|
|
fi
|
|
|
|
DISABLE_CHOWN="$(fn-plugin-property-get "scheduler-docker-local" "$APP" "disable-chown" "")"
|
|
if [[ "$DISABLE_CHOWN" == "true" ]]; then
|
|
return
|
|
fi
|
|
|
|
# shellcheck disable=SC2086
|
|
"$DOCKER_BIN" run $DOKKU_GLOBAL_RUN_ARGS "${ARG_ARRAY[@]}" $IMAGE /bin/bash -c "find $CONTAINER_PATHS -not -user $DOKKU_APP_USER -print0 | xargs -0 -r chown -R $DOKKU_APP_USER" || true
|
|
}
|
|
|
|
scheduler-docker-local-pre-deploy "$@"
|