51 lines
1.7 KiB
Bash
Executable File
51 lines
1.7 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/ps/functions"
|
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
|
|
|
dokku_run_cmd() {
|
|
declare desc="runs command in container based on app image"
|
|
local cmd="run"
|
|
[[ -z $2 ]] && dokku_log_fail "Please specify an app to run the command on"
|
|
local APP="$2"; local IMAGE_TAG=$(get_running_image_tag "$APP"); local IMAGE=$(get_deploying_app_image_name "$APP" "$IMAGE_TAG")
|
|
verify_app_name "$APP"
|
|
|
|
shift 2
|
|
|
|
if [[ -z "$DOKKU_RM_CONTAINER" ]]; then
|
|
local DOKKU_APP_RM_CONTAINER=$(config_get "$APP" DOKKU_RM_CONTAINER || true)
|
|
local DOKKU_GLOBAL_RM_CONTAINER=$(config_get --global DOKKU_RM_CONTAINER || true)
|
|
local DOKKU_RM_CONTAINER=${DOKKU_APP_RM_CONTAINER:="$DOKKU_GLOBAL_RM_CONTAINER"}
|
|
fi
|
|
|
|
local DOCKER_ARGS=$(: | plugn trigger docker-args-run "$APP" "$IMAGE_TAG")
|
|
[[ "$DOKKU_TRACE" ]] && local DOCKER_ARGS+=" -e TRACE=true "
|
|
|
|
local DOKKU_RUN_OPTS=""
|
|
if [[ "$DOKKU_RM_CONTAINER" ]]; then
|
|
DOKKU_RUN_OPTS+=" --rm"
|
|
elif [[ "$DOKKU_DETACH_CONTAINER" ]]; then
|
|
DOKKU_RUN_OPTS+=" --detach"
|
|
fi
|
|
|
|
has_tty && DOKKU_RUN_OPTS+=" -i -t"
|
|
is_image_herokuish_based "$IMAGE" && local EXEC_CMD="/exec"
|
|
|
|
DOKKU_QUIET_OUTPUT=1 extract_procfile "$APP"
|
|
|
|
POTENTIAL_PROCFILE_KEY="$1"
|
|
PROC_CMD=$(get_cmd_from_procfile "$APP" "$POTENTIAL_PROCFILE_KEY" || echo '')
|
|
remove_procfile "$APP"
|
|
|
|
if [ ! -z "$PROC_CMD" ]; then
|
|
dokku_log_info1 "Found '$POTENTIAL_PROCFILE_KEY' in Procfile, running that command"
|
|
set -- "$PROC_CMD" "${@:2}"
|
|
fi
|
|
|
|
# shellcheck disable=SC2086
|
|
docker run $DOKKU_GLOBAL_RUN_ARGS $DOKKU_RUN_OPTS $DOCKER_ARGS $IMAGE $EXEC_CMD "$@"
|
|
}
|
|
|
|
dokku_run_cmd "$@"
|