fix: respect DOKKU_APP_USER in is_image_herokuish_based
This commit is contained in:
@@ -86,7 +86,7 @@ execute_script() {
|
|||||||
local DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
|
local DOCKER_ARGS=$(sed -e "s/--restart=[[:graph:]]\+[[:blank:]]\?//g" <<<"$DOCKER_ARGS")
|
||||||
|
|
||||||
local IMAGE_SOURCE_TYPE="dockerfile"
|
local IMAGE_SOURCE_TYPE="dockerfile"
|
||||||
is_image_herokuish_based "$IMAGE" && IMAGE_SOURCE_TYPE="herokuish"
|
is_image_herokuish_based "$IMAGE" "$APP" && IMAGE_SOURCE_TYPE="herokuish"
|
||||||
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-deploy "$APP" "$IMAGE_TAG" "$IMAGE_SOURCE_TYPE")
|
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-deploy "$APP" "$IMAGE_TAG" "$IMAGE_SOURCE_TYPE")
|
||||||
|
|
||||||
# eval args as array to respect escapes
|
# eval args as array to respect escapes
|
||||||
@@ -109,7 +109,7 @@ execute_script() {
|
|||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if ! is_image_herokuish_based "$IMAGE"; then
|
if ! is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
local DOKKU_DOCKERFILE_ENTRYPOINT=$(config_get "$APP" DOKKU_DOCKERFILE_ENTRYPOINT)
|
local DOKKU_DOCKERFILE_ENTRYPOINT=$(config_get "$APP" DOKKU_DOCKERFILE_ENTRYPOINT)
|
||||||
local DOKKU_DOCKERFILE_CMD=$(config_get "$APP" DOKKU_DOCKERFILE_CMD)
|
local DOKKU_DOCKERFILE_CMD=$(config_get "$APP" DOKKU_DOCKERFILE_CMD)
|
||||||
[[ -z "$DOKKU_DOCKERFILE_ENTRYPOINT" ]] && DOKKU_DOCKERFILE_ENTRYPOINT="$(get_entrypoint_from_image "$IMAGE")"
|
[[ -z "$DOKKU_DOCKERFILE_ENTRYPOINT" ]] && DOKKU_DOCKERFILE_ENTRYPOINT="$(get_entrypoint_from_image "$IMAGE")"
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ check_process() {
|
|||||||
|
|
||||||
IS_HEROKUISH_CONTAINER=false
|
IS_HEROKUISH_CONTAINER=false
|
||||||
IMAGE=$(get_app_image_name "$APP")
|
IMAGE=$(get_app_image_name "$APP")
|
||||||
is_image_herokuish_based "$IMAGE" && IS_HEROKUISH_CONTAINER=true
|
is_image_herokuish_based "$IMAGE" "$APP" && IS_HEROKUISH_CONTAINER=true
|
||||||
|
|
||||||
dokku_log_info1 "Running checks for app ($APP.$PROC_TYPE.$CONTAINER_INDEX)"
|
dokku_log_info1 "Running checks for app ($APP.$PROC_TYPE.$CONTAINER_INDEX)"
|
||||||
CONTAINER_ID=$(<"$DOKKU_CONTAINER_ID_FILE")
|
CONTAINER_ID=$(<"$DOKKU_CONTAINER_ID_FILE")
|
||||||
|
|||||||
@@ -245,7 +245,7 @@ func IsDeployed(appName string) bool {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// IsImageHerokuishBased returns true if app image is based on herokuish
|
// IsImageHerokuishBased returns true if app image is based on herokuish
|
||||||
func IsImageHerokuishBased(image string) bool {
|
func IsImageHerokuishBased(image string, appName string) bool {
|
||||||
output, err := DockerInspect(image, "{{range .Config.Env}}{{if eq . \"USER=herokuishuser\" }}{{println .}}{{end}}{{end}}")
|
output, err := DockerInspect(image, "{{range .Config.Env}}{{if eq . \"USER=herokuishuser\" }}{{println .}}{{end}}{{end}}")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return false
|
return false
|
||||||
|
|||||||
@@ -293,14 +293,20 @@ get_running_image_tag() {
|
|||||||
is_image_herokuish_based() {
|
is_image_herokuish_based() {
|
||||||
declare desc="returns true if app image is based on herokuish"
|
declare desc="returns true if app image is based on herokuish"
|
||||||
declare IMAGE="$1"
|
declare IMAGE="$1"
|
||||||
|
declare APP="$2"
|
||||||
|
local DOKKU_APP_USER
|
||||||
|
if [[ -n "$APP" ]]; then
|
||||||
|
DOKKU_APP_USER=$(config_get "$APP" DOKKU_APP_USER || true)
|
||||||
|
fi
|
||||||
|
DOKKU_APP_USER=${DOKKU_APP_USER:="herokuishuser"}
|
||||||
local USER_VALUE
|
local USER_VALUE
|
||||||
|
|
||||||
if [[ -z "$IMAGE" ]]; then
|
if [[ -z "$IMAGE" ]]; then
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# due to how the build process works, all herokuish images have the Environment variable USER=herokuishuser
|
# due to how the build process works, all herokuish images have the Environment variable USER=$DOKKU_APP_USER
|
||||||
USER_VALUE="$("$DOCKER_BIN" image inspect --format '{{range .Config.Env}}{{if eq . "USER=herokuishuser" }}{{println .}}{{end}}{{end}}' "$IMAGE")"
|
USER_VALUE="$("$DOCKER_BIN" image inspect --format '{{range .Config.Env}}{{if eq . "USER='"$DOKKU_APP_USER"'"}}{{println .}}{{end}}{{end}}' "$IMAGE")"
|
||||||
[[ "$USER_VALUE" == "" ]] && return 1
|
[[ "$USER_VALUE" == "" ]] && return 1
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
@@ -395,7 +401,7 @@ copy_from_image() {
|
|||||||
|
|
||||||
if verify_image "$IMAGE"; then
|
if verify_image "$IMAGE"; then
|
||||||
if ! is_abs_path "$SRC_FILE"; then
|
if ! is_abs_path "$SRC_FILE"; then
|
||||||
if is_image_herokuish_based "$IMAGE"; then
|
if is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
WORKDIR="/app"
|
WORKDIR="/app"
|
||||||
else
|
else
|
||||||
WORKDIR="$("$DOCKER_BIN" image inspect --format '{{.Config.WorkingDir}}' "$IMAGE")"
|
WORKDIR="$("$DOCKER_BIN" image inspect --format '{{.Config.WorkingDir}}' "$IMAGE")"
|
||||||
@@ -583,7 +589,7 @@ release_and_deploy() {
|
|||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
|
|
||||||
if verify_image "$IMAGE"; then
|
if verify_image "$IMAGE"; then
|
||||||
if is_image_herokuish_based "$IMAGE"; then
|
if is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
local IMAGE_SOURCE_TYPE="herokuish"
|
local IMAGE_SOURCE_TYPE="herokuish"
|
||||||
else
|
else
|
||||||
local IMAGE_SOURCE_TYPE="dockerfile"
|
local IMAGE_SOURCE_TYPE="dockerfile"
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ config_docker_args() {
|
|||||||
trigger="$0 config_docker_args"
|
trigger="$0 config_docker_args"
|
||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
|
|
||||||
if ! is_image_herokuish_based "$IMAGE"; then
|
if ! is_image_herokuish_based "$IMAGE" "$APP"; then
|
||||||
ENV_ARGS="$(config_export app "$APP" --format docker-args --merged)"
|
ENV_ARGS="$(config_export app "$APP" --format docker-args --merged)"
|
||||||
echo -n "$STDIN $ENV_ARGS"
|
echo -n "$STDIN $ENV_ARGS"
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ enter_default_cmd() {
|
|||||||
|
|
||||||
local EXEC_CMD=""
|
local EXEC_CMD=""
|
||||||
has_tty && local DOKKU_RUN_OPTS+=" -i -t"
|
has_tty && local DOKKU_RUN_OPTS+=" -i -t"
|
||||||
is_image_herokuish_based "$IMAGE" && local EXEC_CMD="/exec"
|
is_image_herokuish_based "$IMAGE" "$APP" && local EXEC_CMD="/exec"
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
"$DOCKER_BIN" container exec $DOKKU_RUN_OPTS $ID $EXEC_CMD "${@:-$DOKKU_APP_SHELL}"
|
"$DOCKER_BIN" container exec $DOKKU_RUN_OPTS $ID $EXEC_CMD "${@:-$DOKKU_APP_SHELL}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ func BuildConfig(appName string) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
image := common.GetAppImageName(appName, "", "")
|
image := common.GetAppImageName(appName, "", "")
|
||||||
isHerokuishContainer := common.IsImageHerokuishBased(image)
|
isHerokuishContainer := common.IsImageHerokuishBased(image, appName)
|
||||||
common.LogInfo1(fmt.Sprintf("Ensuring network configuration is in sync for %s", appName))
|
common.LogInfo1(fmt.Sprintf("Ensuring network configuration is in sync for %s", appName))
|
||||||
lines, err := common.FileToSlice(scaleFile)
|
lines, err := common.FileToSlice(scaleFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ scheduler-docker-local-scheduler-deploy() {
|
|||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
plugn trigger pre-deploy "$APP" "$IMAGE_TAG"
|
plugn trigger pre-deploy "$APP" "$IMAGE_TAG"
|
||||||
|
|
||||||
is_image_herokuish_based "$IMAGE" && DOKKU_HEROKUISH=true
|
is_image_herokuish_based "$IMAGE" "$APP" && DOKKU_HEROKUISH=true
|
||||||
local IMAGE_SOURCE_TYPE="dockerfile"
|
local IMAGE_SOURCE_TYPE="dockerfile"
|
||||||
[[ "$DOKKU_HEROKUISH" == "true" ]] && IMAGE_SOURCE_TYPE="herokuish"
|
[[ "$DOKKU_HEROKUISH" == "true" ]] && IMAGE_SOURCE_TYPE="herokuish"
|
||||||
local DOKKU_SCALE_FILE="$DOKKU_ROOT/$APP/DOKKU_SCALE"
|
local DOKKU_SCALE_FILE="$DOKKU_ROOT/$APP/DOKKU_SCALE"
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ scheduler-docker-local-scheduler-run() {
|
|||||||
|
|
||||||
local DYNO_NUMBER="$RANDOM"
|
local DYNO_NUMBER="$RANDOM"
|
||||||
local IMAGE_SOURCE_TYPE="dockerfile"
|
local IMAGE_SOURCE_TYPE="dockerfile"
|
||||||
is_image_herokuish_based "$IMAGE" && IMAGE_SOURCE_TYPE="herokuish"
|
is_image_herokuish_based "$IMAGE" "$APP" && IMAGE_SOURCE_TYPE="herokuish"
|
||||||
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-run "$APP" "$IMAGE_TAG" "$IMAGE_SOURCE_TYPE")
|
DOCKER_ARGS+=$(: | plugn trigger docker-args-process-run "$APP" "$IMAGE_TAG" "$IMAGE_SOURCE_TYPE")
|
||||||
DOCKER_ARGS+=" -e DYNO=run.$DYNO_NUMBER --name $APP.run.$DYNO_NUMBER"
|
DOCKER_ARGS+=" -e DYNO=run.$DYNO_NUMBER --name $APP.run.$DYNO_NUMBER"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user