fix: ensure we can execute run commands when exec is executed as part of an entrypoint

Closes #8052
This commit is contained in:
Jose Diaz-Gonzalez
2025-11-19 20:34:51 -05:00
parent 2bd4272424
commit 6f095271e1
5 changed files with 47 additions and 1 deletions

View File

@@ -109,7 +109,8 @@ trigger-scheduler-docker-local-scheduler-run() {
if [[ -n "$PROC_CMD" ]]; then
dokku_log_info1_quiet "Found '$POTENTIAL_PROCFILE_KEY' in Procfile, running that command"
DOCKER_ARGS+=" --label=com.dokku.process-type=$POTENTIAL_PROCFILE_KEY"
set -- "$PROC_CMD" "${@:2}"
read -ra proc_array <<<"$PROC_CMD"
set -- "${proc_array[@]}" "${@:2}"
fi
fi

View File

@@ -0,0 +1,4 @@
#!/bin/bash
set -o pipefail
exec "$@"

View File

@@ -0,0 +1,11 @@
FROM python:3.12.6-bookworm
EXPOSE 3001/udp
EXPOSE 3000/tcp
EXPOSE 3003
COPY . /app
WORKDIR /app
ENTRYPOINT ["/app/exec-entrypoint.sh"]

View File

@@ -0,0 +1 @@
task: echo 'hi dokku'

View File

@@ -51,6 +51,35 @@ teardown() {
assert_output_contains 'echo hi' 0
}
@test "(builder-dockerfile) exec" {
run /bin/bash -c "dokku builder-dockerfile:set $TEST_APP dockerfile-path exec.Dockerfile"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku app-json:set $TEST_APP appjson-path app.json-fake"
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku ps:set $TEST_APP procfile-path exec.Procfile"
echo "output: $output"
echo "status: $status"
assert_success
run deploy_app python dokku@$DOKKU_DOMAIN:$TEST_APP
echo "output: $output"
echo "status: $status"
assert_success
run /bin/bash -c "dokku run $TEST_APP task"
echo "output: $output"
echo "status: $status"
assert_success
assert_output_contains "Found 'task' in Procfile, running that command"
assert_output_contains 'hi dokku'
}
@test "(builder-dockerfile) config export" {
run /bin/bash -c "dokku config:set $TEST_APP GITHUB_TOKEN=custom-value"
echo "output: $output"