Add the ability to enter a running container

This commit is contained in:
Jose Diaz-Gonzalez
2016-08-29 08:19:56 -04:00
parent e569843acd
commit 02316598de
3 changed files with 40 additions and 0 deletions

View File

@@ -21,6 +21,7 @@ postgres:clone <name> <new-name> Create container <new-name> then copy data fro
postgres:connect <name> Connect via psql to a postgres service
postgres:create <name> Create a postgres service with environment variables
postgres:destroy <name> Delete the service and stop its container if there are no links left
postgres:enter <name> [command] Enter a running couchdb service or run a command
postgres:export <name> > <file> Export a dump of the postgres service database
postgres:expose <name> [port] Expose a postgres service on custom port if provided (random port otherwise)
postgres:import <name> < <file> Import a dump into the postgres service database
@@ -71,6 +72,14 @@ dokku postgres:info lolipop --service-root
dokku postgres:info lolipop --status
dokku postgres:info lolipop --version
# a bash prompt can be opened against a running service
# filesystem changes will not be saved to disk
dokku postgres:enter lolipop
# you may also run a command directly against the service
# filesystem changes will not be saved to disk
dokku postgres:enter lolipop ls -lah /
# a postgres service can be linked to a
# container this will use native docker
# links via the docker-options plugin

View File

@@ -102,6 +102,21 @@ service_alternative_alias() {
echo "$ALIAS"
}
service_enter() {
declare desc="enters running app container of specified proc type"
declare SERVICE="$1" && shift 1
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local ID="$(cat "$SERVICE_ROOT/ID")"
docker inspect "$ID" &> /dev/null || dokku_log_fail "Container does not exist"
is_container_status "$ID" "Running" || dokku_log_fail "Container is not running"
local EXEC_CMD=""
has_tty && local DOKKU_RUN_OPTS+=" -i -t"
# shellcheck disable=SC2086
docker exec $DOKKU_RUN_OPTS $ID $EXEC_CMD "${@:-/bin/bash}"
}
service_exposed_ports() {
declare desc="Lists exposed ports for a service"
declare SERVICE="$1"

16
subcommands/enter Executable file
View File

@@ -0,0 +1,16 @@
#!/usr/bin/env bash
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
set -eo pipefail; [[ $DOKKU_TRACE ]] && set -x
source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
enter-cmd() {
declare desc="enter a running $PLUGIN_SERVICE service or run a command"
local cmd="$PLUGIN_COMMAND_PREFIX:enter" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1" && shift 1
dokku_log_info1_quiet "Filesystem changes may not persist after container restarts"
service_enter "$SERVICE" "$@"
}
enter-cmd "$@"