66 lines
3.6 KiB
Bash
Executable File
66 lines
3.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
|
||
set -eo pipefail
|
||
[[ $DOKKU_TRACE ]] && set -x
|
||
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
|
||
|
||
service-link-cmd() {
|
||
#E a $PLUGIN_COMMAND_PREFIX service can be linked to a container.
|
||
#E this will use native docker links via the docker-options plugin.
|
||
#E here we link it to our 'playground' app.
|
||
#E > NOTE: this will restart your app
|
||
#E dokku $PLUGIN_COMMAND_PREFIX:link lollipop playground
|
||
#E the following environment variables will be set automatically by docker
|
||
#E (not on the app itself, so they won’t be listed when calling dokku config):
|
||
#E
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_NAME=/lollipop/DATABASE
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_PORT=tcp://172.17.0.1:${PLUGIN_DATASTORE_PORTS[0]}
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_PORT_${PLUGIN_DATASTORE_PORTS[0]}_TCP=tcp://172.17.0.1:${PLUGIN_DATASTORE_PORTS[0]}
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_PORT_${PLUGIN_DATASTORE_PORTS[0]}_TCP_PROTO=tcp
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_PORT_${PLUGIN_DATASTORE_PORTS[0]}_TCP_PORT=${PLUGIN_DATASTORE_PORTS[0]}
|
||
#E DOKKU_${PLUGIN_VARIABLE}_LOLLIPOP_PORT_${PLUGIN_DATASTORE_PORTS[0]}_TCP_ADDR=172.17.0.1
|
||
#E
|
||
#E the following will be set on the linked application by default:
|
||
#E
|
||
#E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]}/lollipop
|
||
#E
|
||
#E the host exposed here only works internally in docker containers.
|
||
#E if you want your container to be reachable from outside, you should
|
||
#E use the 'expose' subcommand. another service can be linked to your app:
|
||
#E dokku $PLUGIN_COMMAND_PREFIX:link other_service playground
|
||
#E it is possible to change the protocol for ${PLUGIN_DEFAULT_ALIAS}_URL by setting the
|
||
#E environment variable ${PLUGIN_VARIABLE}_DATABASE_SCHEME on the app. doing so will
|
||
#E after linking will cause the plugin to think the service is not
|
||
#E linked, and we advise you to unlink before proceeding.
|
||
#E dokku config:set playground ${PLUGIN_VARIABLE}_DATABASE_SCHEME=${PLUGIN_SCHEME}2
|
||
#E dokku $PLUGIN_COMMAND_PREFIX:link lollipop playground
|
||
#E this will cause ${PLUGIN_DEFAULT_ALIAS}_URL to be set as:
|
||
#E
|
||
#E ${PLUGIN_SCHEME}2://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[0]}/lollipop
|
||
#E
|
||
#E If you specify ${PLUGIN_VARIABLE}_DATABASE_SCHEME to equal `http`, we'll also automatically adjust ${PLUGIN_DEFAULT_ALIAS}_URL to match the http interface:
|
||
#E
|
||
#E http://lollipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lollipop:${PLUGIN_DATASTORE_PORTS[1]}
|
||
#A service, service to run command against
|
||
#A app, app to run command against
|
||
#F -a|--alias "BLUE_DATABASE", an alternative alias to use for linking to an app via environment variable
|
||
#F -q|--querystring "pool=5", ampersand delimited querystring arguments to append to the service link
|
||
#F -n|--no-restart "false", whether or not to restart the app on link (default: true)
|
||
declare desc="link the $PLUGIN_SERVICE service to the app"
|
||
local cmd="$PLUGIN_COMMAND_PREFIX:link" argv=("$@")
|
||
[[ ${argv[0]} == "$cmd" ]] && shift 1
|
||
declare SERVICE="$1" APP="$2" LINK_FLAGS_LIST=("${@:3}")
|
||
APP=${APP:="$DOKKU_APP_NAME"}
|
||
|
||
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
|
||
[[ -z "$APP" ]] && dokku_log_fail "Please specify an app to run the command on"
|
||
verify_app_name "$APP"
|
||
verify_service_name "$SERVICE"
|
||
|
||
service_parse_args "${@:3}"
|
||
service_link "$SERVICE" "$APP"
|
||
}
|
||
|
||
service-link-cmd "$@"
|