Some systems - such as a mounted read-only CIFS filesystem - do not fully support chown, and chowning should be considered optional for cases when the host os has already taken care of permissioning. This commit allows users to disable chown by setting a property on the scheduler-docker-local plugin.
48 lines
1.8 KiB
Bash
Executable File
48 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=$(config_get "$APP" DOKKU_SCHEDULER || echo "docker-local")
|
|
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 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 "$@"
|