fix: do not require double quotes when issuing dokku run commands

This was broken in the #4736.
This commit is contained in:
Jose Diaz-Gonzalez
2021-09-14 04:03:40 -04:00
parent e800b8a9a7
commit abfb0d3977
3 changed files with 49 additions and 25 deletions

View File

@@ -238,10 +238,11 @@ fn-scheduler-docker-local-register-retired() {
fn-scheduler-docker-local-start-app-container() {
declare desc="starts a single app container"
declare APP="$1" DOCKER_ARGS="$2"
declare APP="$1"
shift
declare DOCKER_ARGS=("$@")
declare -a __DOKKU_DOCKER_ARG_ARRAY
eval "__DOKKU_DOCKER_ARG_ARRAY=($DOCKER_ARGS)"
eval "$(config_export app "$APP" --merged)"
"$DOCKER_BIN" container create "${__DOKKU_DOCKER_ARG_ARRAY[@]}"
# shellcheck disable=SC2124
"$DOCKER_BIN" container create ${DOCKER_ARGS[@]}
}

View File

@@ -82,13 +82,13 @@ trigger-scheduler-docker-local-scheduler-deploy() {
# start the app
local DOCKER_ARGS
DOCKER_ARGS=$(: | plugn trigger docker-args-deploy "$APP" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX")
DOCKER_ARGS+=" --label=com.dokku.process-type=$PROC_TYPE --label=com.dokku.dyno=$DYNO "
DOCKER_ARGS+=" --env=DYNO=$DYNO "
DOCKER_ARGS+=" --name=$APP.$DYNO.upcoming-$RANDOM "
DOCKER_ARGS+=" --init "
DOCKER_ARGS+=" --label=com.dokku.process-type=$PROC_TYPE --label=com.dokku.dyno=$DYNO"
DOCKER_ARGS+=" --env=DYNO=$DYNO"
DOCKER_ARGS+=" --name=$APP.$DYNO.upcoming-$RANDOM"
DOCKER_ARGS+=" --init"
DOCKER_ARGS+=" $DOCKER_RUN_LABEL_ARGS $DOKKU_GLOBAL_RUN_ARGS "
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-deploy "$APP" "$IMAGE_SOURCE_TYPE" "$IMAGE_TAG" "$PROC_TYPE" "$CONTAINER_INDEX")
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true "
[[ "$DOKKU_TRACE" ]] && DOCKER_ARGS+=" --env=TRACE=true"
local START_CMD
[[ "$DOKKU_HEROKUISH" == "true" ]] && START_CMD="/start $PROC_TYPE"
@@ -105,18 +105,20 @@ trigger-scheduler-docker-local-scheduler-deploy() {
fi
if [[ "$DOKKU_NETWORK_BIND_ALL" == "true" ]]; then
DOCKER_ARGS+=" -p $p "
DOCKER_ARGS+=" -p $p"
fi
done
fi
DOCKER_ARGS+=" --env=PORT=$DOKKU_PORT "
DOCKER_ARGS+=" --env=PORT=$DOKKU_PORT"
START_CMD=$(fn-scheduler-docker-local-extract-start-cmd "$APP" "$PROC_TYPE" "$START_CMD" "$DOKKU_HEROKUISH" "$DOKKU_PORT")
DOCKER_ARGS+=" $IMAGE "
DOCKER_ARGS+=" $START_CMD "
DOCKER_ARGS+=" $IMAGE"
DOCKER_ARGS+=" $START_CMD"
cid=$(fn-scheduler-docker-local-start-app-container "$APP" "$DOCKER_ARGS")
declare -a ARG_ARRAY
eval "ARG_ARRAY=($DOCKER_ARGS)"
cid=$(fn-scheduler-docker-local-start-app-container "$APP" "${ARG_ARRAY[@]}")
plugn trigger post-container-create "app" "$cid" "$APP" "deploy" "$PROC_TYPE"
"$DOCKER_BIN" container start "$cid" >/dev/null || true

View File

@@ -14,12 +14,12 @@ trigger-scheduler-docker-local-scheduler-run() {
declare RUN_ENV=("${@:1:ENV_COUNT}")
shift "$ENV_COUNT"
declare RUN_COMMAND=("$@")
if [[ "$DOKKU_SCHEDULER" != "docker-local" ]]; then
return
fi
local DOCKER_RUN_LABEL_ARGS="--label=com.dokku.app-name=$APP"
local IMAGE_TAG=$(get_running_image_tag "$APP")
local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG")
@@ -44,13 +44,13 @@ trigger-scheduler-docker-local-scheduler-run() {
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-run "$APP" "$IMAGE_SOURCE_TYPE" "$IMAGE_TAG")
DOCKER_ARGS+=" -e DYNO=$PROCESS_TYPE.$DYNO_NUMBER --name $APP.$PROCESS_TYPE.$DYNO_NUMBER"
declare -a ARG_ARRAY
eval "ARG_ARRAY=($DOCKER_ARGS)"
if [[ "$DOKKU_RM_CONTAINER" ]]; then
DOCKER_ARGS+=" --rm"
fi
has_tty && DOCKER_ARGS+=" --interactive --tty"
if has_tty; then
DOCKER_ARGS+=" --interactive"
DOCKER_ARGS+=" --tty"
fi
for env_pair in "${RUN_ENV[@]}"; do
DOCKER_ARGS+=" --env=$env_pair"
done
@@ -76,13 +76,34 @@ trigger-scheduler-docker-local-scheduler-run() {
fi
# shellcheck disable=SC2124
DOCKER_ARGS+=" --label=com.dokku.container-type=$PROCESS_TYPE ${DOCKER_RUN_LABEL_ARGS[@]} $DOKKU_GLOBAL_RUN_ARGS"
DOCKER_ARGS+=" $IMAGE "
DOCKER_ARGS+=" $EXEC_CMD "
# shellcheck disable=SC2124
DOCKER_ARGS+=" $@"
DOCKER_ARGS+=" --label=com.dokku.container-type=$PROCESS_TYPE"
DOCKER_ARGS+=" --label=com.dokku.app-name=$APP"
# $DOKKU_GLOBAL_RUN_ARGS"
DOCKER_ARGS+=" $IMAGE"
DOCKER_ARGS+=" $EXEC_CMD"
CONTAINER_ID=$(fn-scheduler-docker-local-start-app-container "$APP" "$DOCKER_ARGS")
declare -a ARG_ARRAY
eval "ARG_ARRAY=($DOCKER_ARGS)"
if [[ "${#RUN_COMMAND[@]}" -eq 0 ]]; then
if [[ -z "$DOKKU_SHELL" ]]; then
local DOKKU_APP_SHELL=$(config_get "$APP" DOKKU_APP_SHELL || true)
local DOKKU_GLOBAL_SHELL=$(config_get --global DOKKU_APP_SHELL || true)
local DOKKU_SHELL=${DOKKU_APP_SHELL:="$DOKKU_GLOBAL_SHELL"}
fi
if [[ -z "$DOKKU_SHELL" ]]; then
DOKKU_SHELL="/bin/bash"
fi
ARG_ARRAY=(${ARG_ARRAY[@]} "$DOKKU_SHELL")
else
ARG_ARRAY=(${ARG_ARRAY[@]} "${RUN_COMMAND[@]}")
# for run_arg in "${RUN_COMMAND[@]}"; do
# DOCKER_ARGS+=" ${run_arg} "
# done
fi
CONTAINER_ID=$(fn-scheduler-docker-local-start-app-container "$APP" "${ARG_ARRAY[@]}")
plugn trigger post-container-create "app" "$CONTAINER_ID" "$APP" "run"
declare -a DOCKER_START_ARGS_ARRAY