From 61d4b478ce9d96fb6396d714437b5daa978192a1 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Tue, 27 Jul 2021 02:26:15 -0400 Subject: [PATCH] feat: add --no-tty flag to `run` and `run:detached` commands --- docs/processes/one-off-tasks.md | 8 ++++++++ plugins/common/functions | 4 ++++ plugins/run/internal-functions | 5 +++++ 3 files changed, 17 insertions(+) diff --git a/docs/processes/one-off-tasks.md b/docs/processes/one-off-tasks.md index bc586fbdd..1cc23981e 100644 --- a/docs/processes/one-off-tasks.md +++ b/docs/processes/one-off-tasks.md @@ -41,6 +41,14 @@ Containers may have specific labels attached. In order to avoid issues with dokk dokku --label=com.example.test-label=value run node-js-app ls -lah ``` +#### Disabling TTY + +One-off containers default to interactive mode where possible. To disable this behavior, specify the `--no-tty` flag: + +```shell +dokku run --no-tty node-js-app ls -lah +``` + ### Running a detached container Finally, a container can be run in "detached" mode via the `run:detached` Dokku command. Running a process in detached mode will immediately return a `CONTAINER_ID`. It is up to the user to then further manage this container in whatever manner they see fit, as Dokku will *not* automatically terminate the container. diff --git a/plugins/common/functions b/plugins/common/functions index 938c56d4c..89901ec0e 100755 --- a/plugins/common/functions +++ b/plugins/common/functions @@ -4,6 +4,10 @@ set -eo pipefail has_tty() { declare desc="return 0 if we have a tty" + if [[ "$DOKKU_DISABLE_TTY" == "true" ]]; then + return 1 + fi + if [[ "$(LC_ALL=C /usr/bin/tty || true)" == "not a tty" ]]; then return 1 else diff --git a/plugins/run/internal-functions b/plugins/run/internal-functions index 8ebc6cc90..8a22ad8cf 100755 --- a/plugins/run/internal-functions +++ b/plugins/run/internal-functions @@ -17,6 +17,10 @@ fn-run() { SCHEDULER_ID+=("$arg") shift ;; + --no-tty) + export DOKKU_DISABLE_TTY=true + shift + ;; --cron-id) if [[ ! $2 ]]; then dokku_log_warn "expected $1 to have an argument" @@ -67,6 +71,7 @@ cmd-run-detached() { [[ "$1" == "$cmd" ]] && shift 1 export DOKKU_DETACH_CONTAINER=1 + export DOKKU_DISABLE_TTY=true export DOKKU_RM_CONTAINER=1 fn-run "$@" }