diff --git a/common-functions b/common-functions index d325166..08a6c6f 100755 --- a/common-functions +++ b/common-functions @@ -586,6 +586,26 @@ service_parse_args() { shift "$((OPTIND - 1))" # remove options from positional parameters } +service_password() { + declare desc="Fetch the password for a service" + declare SERVICE="$1" + local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" + local PASSWORD_FILE="$SERVICE_ROOT/PASSWORD" + if [[ -f "$PASSWORD" ]]; then + cat "$PASSWORD_FILE" + fi +} + +service_root_password() { + declare desc="Fetch the root password for a service" + declare SERVICE="$1" + local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" + local PASSWORD_FILE="$SERVICE_ROOT/ROOTPASSWORD" + if [[ -f "$PASSWORD" ]]; then + cat "$PASSWORD_FILE" + fi +} + service_port_expose() { declare desc="Wrapper for exposing service ports" declare SERVICE="$1" diff --git a/functions b/functions index d960067..ef06bf2 100755 --- a/functions +++ b/functions @@ -14,7 +14,7 @@ service_connect() { local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_NAME="$(get_service_name "$SERVICE")" local DATABASE_NAME="$(get_database_name "$SERVICE")" - local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" + local PASSWORD="$(service_password "$SERVICE")" local SERVICE_TTY_OPTS has_tty && SERVICE_TTY_OPTS="-t" @@ -78,8 +78,8 @@ service_create_container() { local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE" local SERVICE_NAME="$(get_service_name "$SERVICE")" - local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" - local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" + local ROOTPASSWORD="$(service_root_password "$SERVICE")" + local PASSWORD="$(service_password "$SERVICE")" local DATABASE_NAME="$(get_database_name "$SERVICE")" ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/var/lib/mysql" -v "$SERVICE_HOST_ROOT/config:/etc/mysql/conf.d" -e "MYSQL_ROOT_PASSWORD=$ROOTPASSWORD" -e MYSQL_USER=mysql -e "MYSQL_PASSWORD=$PASSWORD" -e "MYSQL_DATABASE=$DATABASE_NAME" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=mysql "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION") @@ -97,7 +97,7 @@ service_export() { local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_NAME="$(get_service_name "$SERVICE")" local DATABASE_NAME="$(get_database_name "$SERVICE")" - local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" + local PASSWORD="$(service_password "$SERVICE")" [[ -n $SSH_TTY ]] && stty -opost docker exec "$SERVICE_NAME" bash -c "printf '[client]\npassword=$PASSWORD\n' > /root/credentials.cnf" @@ -114,7 +114,7 @@ service_import() { local SERVICE_NAME="$(get_service_name "$SERVICE")" local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE" local DATABASE_NAME="$(get_database_name "$SERVICE")" - local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" + local ROOTPASSWORD="$(service_root_password "$SERVICE")" if [[ -t 0 ]]; then dokku_log_fail "No data provided on stdin." @@ -139,8 +139,8 @@ service_start() { dokku_log_info2_quiet "Starting container" local PREVIOUS_ID=$(docker ps -aq --no-trunc --filter "status=exited" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true - local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" - local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" + local ROOTPASSWORD="$(service_root_password "$SERVICE")" + local PASSWORD="$(service_password "$SERVICE")" if [[ -n $PREVIOUS_ID ]]; then docker start "$PREVIOUS_ID" >/dev/null @@ -155,9 +155,8 @@ service_start() { service_url() { local SERVICE="$1" - local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_DNS_HOSTNAME="$(service_dns_hostname "$SERVICE")" local DATABASE_NAME="$(get_database_name "$SERVICE")" - local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")" + local PASSWORD="$(service_password "$SERVICE")" echo "$PLUGIN_SCHEME://mysql:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}/$DATABASE_NAME" }