这是indexloc提供的服务,不要输入任何密码
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions docs/deployment/one-off-processes.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,15 @@ dokku --rm-container run node-js-app ls -lah
dokku --rm run node-js-app ls -lah
```

Finally, you may wish to run a container in "detached" mode via the `--detach` dokku flag. 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.

```shell
dokku --detach run node-js-app ls -lah
# returns the ID of the new container
```

> Note that you may not use the `--rm-container` or `--rm` flags when running containers in detached mode, and attempting to do so will result in the `--detach` flag being ignored.

### Using `run` for cron tasks

You can always use a one-off container to run an application task:
Expand Down
11 changes: 9 additions & 2 deletions plugins/00_dokku-standard/subcommands/run
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,15 @@ dokku_run_cmd() {

local DOCKER_ARGS=$(: | plugn trigger docker-args-run "$APP" "$IMAGE_TAG")
[[ "$DOKKU_TRACE" ]] && local DOCKER_ARGS+=" -e TRACE=true "
[[ "$DOKKU_RM_CONTAINER" ]] && local DOKKU_RUN_OPTS="--rm"
has_tty && local DOKKU_RUN_OPTS+=" -i -t"

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"
# shellcheck disable=SC2086
docker run $DOKKU_GLOBAL_RUN_ARGS $DOKKU_RUN_OPTS $DOCKER_ARGS $IMAGE $EXEC_CMD "$@"
Expand Down
3 changes: 3 additions & 0 deletions plugins/common/functions
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,9 @@ parse_args() {
--quiet)
export DOKKU_QUIET_OUTPUT=1
;;
--detach)
export DOKKU_DETACH_CONTAINER=1
;;
--trace)
export DOKKU_TRACE=1
;;
Expand Down
21 changes: 21 additions & 0 deletions tests/unit/30_core_1.bats
Original file line number Diff line number Diff line change
Expand Up @@ -112,6 +112,27 @@ build_nginx_config() {
assert_success
}

@test "(core) run (detached)" {
deploy_app

RANDOM_RUN_CID="$(dokku --detach run $TEST_APP bash)"
run bash -c "docker inspect $RANDOM_RUN_CID"
echo "output: "$output
echo "status: "$status
assert_success

run bash -c "docker stop $RANDOM_RUN_CID"
echo "output: "$output
echo "status: "$status
assert_success

run dokku cleanup
echo "output: "$output
echo "status: "$status
assert_success
sleep 5 # wait for dokku cleanup to happen in the background
}

@test "(core) run (with tty)" {
deploy_app
run /bin/bash -c "dokku run $TEST_APP ls /app/package.json"
Expand Down