diff --git a/README.md b/README.md index dfc4ed8..5b927a2 100644 --- a/README.md +++ b/README.md @@ -19,11 +19,12 @@ dokku plugin:install https://github.com/dokku/dokku-mongo.git mongo ``` mongo:clone Create container then copy data from into mongo:connect Connect via telnet to a mongo service +mongo:connect-admin Connect via telnet to a mongo service as admin user mongo:create Create a mongo service with environment variables mongo:destroy Delete the service and stop its container if there are no links left mongo:export > Export a dump of the mongo service database mongo:expose [port] Expose a mongo service on custom port if provided (random port otherwise) -mongo:import < Import a dump into the mongo service database +mongo:import < Import a dump into the mongo service database mongo:info Print the connection information mongo:link Link the mongo service to the app mongo:list List all mongo services diff --git a/commands b/commands index df51308..073d9f6 100755 --- a/commands +++ b/commands @@ -19,6 +19,10 @@ case "$1" in "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/subcommands/connect" "$@" ;; + $PLUGIN_COMMAND_PREFIX:connect-admin) + "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/subcommands/connect-admin" "$@" + ;; + $PLUGIN_COMMAND_PREFIX:create) "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/subcommands/create" "$@" ;; @@ -86,6 +90,7 @@ case "$1" in cat< , Create container then copy data from into $PLUGIN_COMMAND_PREFIX:connect , Connect via mongo to a $PLUGIN_SERVICE service + $PLUGIN_COMMAND_PREFIX:connect-admin , Connect via mongo to a $PLUGIN_SERVICE service as admin user $PLUGIN_COMMAND_PREFIX:create , Create a $PLUGIN_SERVICE service $PLUGIN_COMMAND_PREFIX:destroy , Delete the $PLUGIN_SERVICE service and stop its container if there are no links left $PLUGIN_COMMAND_PREFIX:export , Export a dump of the $PLUGIN_SERVICE service database diff --git a/subcommands/connect-admin b/subcommands/connect-admin new file mode 100644 index 0000000..ac4ac13 --- /dev/null +++ b/subcommands/connect-admin @@ -0,0 +1,22 @@ +#!/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" + +mongo-connect-admin-cmd() { + declare desc="connect via mongo to a $PLUGIN_SERVICE service as admin user" + local cmd="$PLUGIN_COMMAND_PREFIX:admin" argv=("$@"); [[ ${argv[0]} == "$cmd" ]] && shift 1 + declare SERVICE="$1" + + [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a name for the service" + verify_service_name "$SERVICE" + SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" + SERVICE_NAME="$(get_service_name "$SERVICE")" + PASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" + has_tty && SERVICE_TTY_OPTS="-t" + + docker exec -i $SERVICE_TTY_OPTS "$SERVICE_NAME" mongo -u admin -p "$PASSWORD" --authenticationDatabase admin "$SERVICE" +} + +mongo-connect-admin-cmd "$@"