feat: expand the PORT environment variable when provided
Refs #2793 Refs #3196
This commit is contained in:
@@ -394,21 +394,13 @@ get_app_running_container_types() {
|
|||||||
|
|
||||||
get_cmd_from_procfile() {
|
get_cmd_from_procfile() {
|
||||||
declare desc="parse cmd from app Procfile"
|
declare desc="parse cmd from app Procfile"
|
||||||
local APP=$1; local PROC_TYPE=$2; local DOKKU_PROCFILE="$DOKKU_ROOT/$APP/DOKKU_PROCFILE"
|
declare APP="$1" PROC_TYPE="$2" PORT="$3"
|
||||||
|
local DOKKU_PROCFILE="$DOKKU_ROOT/$APP/DOKKU_PROCFILE"
|
||||||
|
local COMMAND
|
||||||
verify_app_name "$APP"
|
verify_app_name "$APP"
|
||||||
|
|
||||||
if [[ -f $DOKKU_PROCFILE ]]; then
|
[[ ! -f $DOKKU_PROCFILE ]] && return
|
||||||
local line; local name; local command
|
procfile-util show -p "$PROC_TYPE" --port "$PORT"
|
||||||
while read -r line || [[ -n "$line" ]]; do
|
|
||||||
if [[ -z "$line" ]] || [[ "$line" == "#"* ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
line=$(strip_inline_comments "$line")
|
|
||||||
name="${line%%:*}"
|
|
||||||
command="${line#*:[[:space:]]}"
|
|
||||||
[[ "$name" == "$PROC_TYPE" ]] && echo "$command" && break
|
|
||||||
done < "$DOKKU_PROCFILE"
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
is_deployed() {
|
is_deployed() {
|
||||||
|
|||||||
@@ -64,12 +64,6 @@ scheduler-docker-local-scheduler-deploy() {
|
|||||||
|
|
||||||
[[ "$DOKKU_HEROKUISH" == "true" ]] && local START_CMD="/start $PROC_TYPE"
|
[[ "$DOKKU_HEROKUISH" == "true" ]] && local START_CMD="/start $PROC_TYPE"
|
||||||
|
|
||||||
if [[ "$DOKKU_HEROKUISH" == "false" ]]; then
|
|
||||||
local DOKKU_DOCKERFILE_START_CMD=$(config_get "$APP" DOKKU_DOCKERFILE_START_CMD || true)
|
|
||||||
local DOKKU_PROCFILE_START_CMD=$(get_cmd_from_procfile "$APP" "$PROC_TYPE")
|
|
||||||
local START_CMD=${DOKKU_DOCKERFILE_START_CMD:-$DOKKU_PROCFILE_START_CMD}
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ "$PROC_TYPE" == "web" ]]; then
|
if [[ "$PROC_TYPE" == "web" ]]; then
|
||||||
ports=($(plugn trigger network-compute-ports "$APP" "$PROC_TYPE" "$DOKKU_HEROKUISH"))
|
ports=($(plugn trigger network-compute-ports "$APP" "$PROC_TYPE" "$DOKKU_HEROKUISH"))
|
||||||
local DOKKU_DOCKER_PORT_ARGS=""
|
local DOKKU_DOCKER_PORT_ARGS=""
|
||||||
@@ -81,6 +75,8 @@ scheduler-docker-local-scheduler-deploy() {
|
|||||||
DOKKU_DOCKER_PORT_ARGS+=" -p $p "
|
DOKKU_DOCKER_PORT_ARGS+=" -p $p "
|
||||||
done
|
done
|
||||||
|
|
||||||
|
local START_CMD
|
||||||
|
START_CMD=$(fn-scheduler-docker-local-extract-start-cmd "$APP" "$PROC_TYPE" "$DOKKU_HEROKUISH" "$DOKKU_PORT")
|
||||||
if [[ "$DOKKU_NETWORK_BIND_ALL" == "false" ]]; then
|
if [[ "$DOKKU_NETWORK_BIND_ALL" == "false" ]]; then
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -e PORT=$DOKKU_PORT "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d -e PORT=$DOKKU_PORT "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
||||||
@@ -89,6 +85,9 @@ scheduler-docker-local-scheduler-deploy() {
|
|||||||
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d $DOKKU_DOCKER_PORT_ARGS -e PORT=$DOKKU_PORT "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d $DOKKU_DOCKER_PORT_ARGS -e PORT=$DOKKU_PORT "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
|
local START_CMD
|
||||||
|
START_CMD=$(fn-scheduler-docker-local-extract-start-cmd "$APP" "$PROC_TYPE" "$DOKKU_HEROKUISH")
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
cid=$(docker run $DOKKU_GLOBAL_RUN_ARGS -d "${ARG_ARRAY[@]}" $IMAGE $START_CMD)
|
||||||
fi
|
fi
|
||||||
@@ -177,4 +176,17 @@ scheduler-docker-local-scheduler-deploy() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn-scheduler-docker-local-extract-start-cmd() {
|
||||||
|
declare APP="$1" PROC_TYPE="$2" DOKKU_HEROKUISH="$3" PORT="$4"
|
||||||
|
local DOKKU_DOCKERFILE_START_CMD DOKKU_PROCFILE_START_CMD START_CMD
|
||||||
|
if [[ "$DOKKU_HEROKUISH" != "false" ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
DOKKU_DOCKERFILE_START_CMD=$(config_get "$APP" DOKKU_DOCKERFILE_START_CMD || true)
|
||||||
|
DOKKU_PROCFILE_START_CMD=$(get_cmd_from_procfile "$APP" "$PROC_TYPE" "$PORT")
|
||||||
|
START_CMD=${DOKKU_DOCKERFILE_START_CMD:-$DOKKU_PROCFILE_START_CMD}
|
||||||
|
echo "$START_CMD"
|
||||||
|
}
|
||||||
|
|
||||||
scheduler-docker-local-scheduler-deploy "$@"
|
scheduler-docker-local-scheduler-deploy "$@"
|
||||||
|
|||||||
@@ -16,13 +16,13 @@ teardown() {
|
|||||||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
source "$PLUGIN_CORE_AVAILABLE_PATH/ps/functions"
|
source "$PLUGIN_CORE_AVAILABLE_PATH/ps/functions"
|
||||||
cat <<EOF > "$DOKKU_ROOT/$TEST_APP/DOKKU_PROCFILE"
|
cat <<EOF > "$DOKKU_ROOT/$TEST_APP/DOKKU_PROCFILE"
|
||||||
web: node web.js
|
web: node web.js --port \$PORT
|
||||||
worker: node worker.js
|
worker: node worker.js
|
||||||
EOF
|
EOF
|
||||||
run get_cmd_from_procfile "$TEST_APP" web
|
run get_cmd_from_procfile "$TEST_APP" web 5001
|
||||||
echo "output: "$output
|
echo "output: "$output
|
||||||
echo "status: "$status
|
echo "status: "$status
|
||||||
assert_output "node web.js"
|
assert_output "node web.js --port 5001"
|
||||||
|
|
||||||
run get_cmd_from_procfile "$TEST_APP" worker
|
run get_cmd_from_procfile "$TEST_APP" worker
|
||||||
echo "output: "$output
|
echo "output: "$output
|
||||||
|
|||||||
Reference in New Issue
Block a user