Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
02aa923464 | ||
|
|
fa10fa6a47 | ||
|
|
dc8001df6e | ||
|
|
ebf18d0506 | ||
|
|
e2e0f1ce3f | ||
|
|
aabc7aeb24 | ||
|
|
4074970748 | ||
|
|
05513fe247 |
@@ -1,6 +1,6 @@
|
|||||||
# dokku mysql [](https://github.com/dokku/dokku-mysql/actions/workflows/ci.yml?query=branch%3Amaster) [](https://webchat.libera.chat/?channels=dokku)
|
# dokku mysql [](https://github.com/dokku/dokku-mysql/actions/workflows/ci.yml?query=branch%3Amaster) [](https://webchat.libera.chat/?channels=dokku)
|
||||||
|
|
||||||
Official mysql plugin for dokku. Currently defaults to installing [mysql 8.0.28](https://hub.docker.com/_/mysql/).
|
Official mysql plugin for dokku. Currently defaults to installing [mysql 8.0.29](https://hub.docker.com/_/mysql/).
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
|
|
||||||
|
|||||||
2
commands
2
commands
@@ -1,7 +1,7 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
||||||
[[ " help $PLUGIN_COMMAND_PREFIX:help $PLUGIN_COMMAND_PREFIX $PLUGIN_COMMAND_PREFIX:default " == *" $1 "* ]] || [[ "$1" == "$PLUGIN_COMMAND_PREFIX:"* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
|
[[ " help $PLUGIN_COMMAND_PREFIX:help $PLUGIN_COMMAND_PREFIX $PLUGIN_COMMAND_PREFIX:default " == *" $1 "* ]] || [[ "$1" == "$PLUGIN_COMMAND_PREFIX:"* ]] || exit "$DOKKU_NOT_IMPLEMENTED_EXIT"
|
||||||
source "$PLUGIN_BASE_PATH/common/functions"
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $DOKKU_TRACE ]] && set -x
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
|
|||||||
@@ -16,6 +16,64 @@ add_to_links_file() {
|
|||||||
sort "$LINKS_FILE" -u -o "$LINKS_FILE"
|
sort "$LINKS_FILE" -u -o "$LINKS_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
auth_service_filter() {
|
||||||
|
declare desc="calls user-service plugin trigger"
|
||||||
|
declare SERVICES=("$@")
|
||||||
|
local user_auth_count
|
||||||
|
|
||||||
|
if [[ "${#SERVICES[@]}" -eq 0 ]]; then
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
user_auth_count="$(find "$PLUGIN_PATH"/enabled/*/user-auth-service 2>/dev/null | wc -l)"
|
||||||
|
|
||||||
|
# no plugin trigger exists
|
||||||
|
if [[ $user_auth_count == 0 ]]; then
|
||||||
|
# echo out all the services since there is no plugin trigger
|
||||||
|
for SERVICE in "${SERVICES[@]}"; do
|
||||||
|
[[ -n "$SERVICE" ]] && echo "$SERVICE"
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# this plugin trigger exists in the core `20_events` plugin
|
||||||
|
if [[ "$user_auth_count" == 1 ]] && [[ -f "$PLUGIN_PATH"/enabled/20_events/user-auth-service ]]; then
|
||||||
|
# echo out all the services since there is no valid plugin trigger
|
||||||
|
for SERVICE in "${SERVICES[@]}"; do
|
||||||
|
[[ -n "$SERVICE" ]] && echo "$SERVICE"
|
||||||
|
done
|
||||||
|
return 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
export SSH_USER=${SSH_USER:=$USER}
|
||||||
|
export SSH_NAME=${NAME:="default"}
|
||||||
|
# the output of this trigger should be all the services a user has access to
|
||||||
|
plugn trigger user-auth-service "$SSH_USER" "$SSH_NAME" "${SERVICES[@]}"
|
||||||
|
}
|
||||||
|
|
||||||
|
fn-services-list() {
|
||||||
|
declare desc="prints a filtered list of all local apps"
|
||||||
|
declare FILTER="$1"
|
||||||
|
local detected_services filtered_services services
|
||||||
|
|
||||||
|
local detected_services=("$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)")
|
||||||
|
if [[ "$FILTER" == "false" ]]; then
|
||||||
|
for service in "${detected_services[@]}"; do
|
||||||
|
if [[ -n "$service" ]]; then
|
||||||
|
echo "$service"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
return
|
||||||
|
fi
|
||||||
|
|
||||||
|
filtered_services="$(auth_service_filter "${detected_services[@]}" 2>/dev/null)"
|
||||||
|
for service in "$filtered_services"; do
|
||||||
|
if [[ -n "$service" ]]; then
|
||||||
|
echo "$service"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
docker_ports_options() {
|
docker_ports_options() {
|
||||||
declare desc="export a list of exposed ports"
|
declare desc="export a list of exposed ports"
|
||||||
declare PORTS=("$@")
|
declare PORTS=("$@")
|
||||||
@@ -180,7 +238,8 @@ service_app_links() {
|
|||||||
local SERVICE LINKED_APP
|
local SERVICE LINKED_APP
|
||||||
|
|
||||||
pushd "$PLUGIN_DATA_ROOT" >/dev/null
|
pushd "$PLUGIN_DATA_ROOT" >/dev/null
|
||||||
for SERVICE in *; do
|
for SERVICE in $(fn-services-list); do
|
||||||
|
[[ -n "$SERVICE" ]] || continue
|
||||||
[[ -f "$SERVICE/LINKS" ]] || continue
|
[[ -f "$SERVICE/LINKS" ]] || continue
|
||||||
for LINKED_APP in $(<"$SERVICE/LINKS"); do
|
for LINKED_APP in $(<"$SERVICE/LINKS"); do
|
||||||
if [[ "$LINKED_APP" == "$APP" ]]; then
|
if [[ "$LINKED_APP" == "$APP" ]]; then
|
||||||
@@ -411,6 +470,14 @@ service_enter() {
|
|||||||
docker exec $DOKKU_RUN_OPTS $ID $EXEC_CMD "${@:-/bin/bash}"
|
docker exec $DOKKU_RUN_OPTS $ID $EXEC_CMD "${@:-/bin/bash}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
service_exists() {
|
||||||
|
declare desc="returns 0 or 1 depending on whether service exists or not"
|
||||||
|
declare SERVICE="$1"
|
||||||
|
[[ -z "$SERVICE" ]] && return 1
|
||||||
|
[[ -d "$PLUGIN_DATA_ROOT/$SERVICE" ]] && return 0
|
||||||
|
return 1
|
||||||
|
}
|
||||||
|
|
||||||
service_exposed_ports() {
|
service_exposed_ports() {
|
||||||
declare desc="list exposed ports for a service"
|
declare desc="list exposed ports for a service"
|
||||||
declare SERVICE="$1"
|
declare SERVICE="$1"
|
||||||
@@ -567,16 +634,16 @@ service_links() {
|
|||||||
|
|
||||||
service_list() {
|
service_list() {
|
||||||
declare desc="list all services and their status"
|
declare desc="list all services and their status"
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
|
||||||
|
|
||||||
if [[ -z $SERVICES ]]; then
|
services=("$(fn-services-list true)")
|
||||||
|
if [[ "${#services[@]}" -eq 0 ]] || [[ -z "$services" ]]; then
|
||||||
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
|
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
|
||||||
for SERVICE in $SERVICES; do
|
for service in "${services[@]}"; do
|
||||||
echo "$SERVICE"
|
echo "$service"
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -887,9 +954,21 @@ update_plugin_scheme_for_app() {
|
|||||||
|
|
||||||
verify_service_name() {
|
verify_service_name() {
|
||||||
declare desc="verify that a service exists"
|
declare desc="verify that a service exists"
|
||||||
declare SERVICE="$1"
|
declare SERVICE="$@"
|
||||||
[[ -z "$SERVICE" ]] && dokku_log_fail "(verify_service_name) SERVICE must not be null"
|
|
||||||
[[ ! -d "$PLUGIN_DATA_ROOT/$SERVICE" ]] && dokku_log_fail "$PLUGIN_SERVICE service $SERVICE does not exist"
|
if [[ -z "$SERVICE" ]]; then
|
||||||
|
dokku_log_fail "SERVICE must not be empty"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -d "$PLUGIN_DATA_ROOT/$SERVICE" ]]; then
|
||||||
|
dokku_log_fail "$PLUGIN_SERVICE service $SERVICE does not exist"
|
||||||
|
fi
|
||||||
|
|
||||||
|
SERVICE="$(auth_service_filter "$SERVICE")"
|
||||||
|
if [[ -z "$SERVICE" ]]; then
|
||||||
|
dokku_log_fail "$PLUGIN_SERVICE service $SERVICE does not exist"
|
||||||
|
fi
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $DOKKU_TRACE ]] && set -x
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common-functions"
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common-functions"
|
||||||
source "$PLUGIN_BASE_PATH/common/functions"
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||||
if [[ -f "$PLUGIN_AVAILABLE_PATH/docker-options/functions" ]]; then
|
if [[ -f "$PLUGIN_AVAILABLE_PATH/docker-options/functions" ]]; then
|
||||||
source "$PLUGIN_AVAILABLE_PATH/docker-options/functions"
|
source "$PLUGIN_AVAILABLE_PATH/docker-options/functions"
|
||||||
|
|||||||
3
install
3
install
@@ -44,8 +44,7 @@ EOL
|
|||||||
|
|
||||||
chmod 0440 "$_SUDOERS_FILE"
|
chmod 0440 "$_SUDOERS_FILE"
|
||||||
|
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in $SERVICES; do
|
|
||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
|
|
||||||
if [[ ! -f "$SERVICE_ROOT/IMAGE" ]] || [[ ! -f "$SERVICE_ROOT/IMAGE_VERSION" ]]; then
|
if [[ ! -f "$SERVICE_ROOT/IMAGE" ]] || [[ ! -f "$SERVICE_ROOT/IMAGE_VERSION" ]]; then
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku mysql service plugin"
|
description = "dokku mysql service plugin"
|
||||||
version = "1.19.5"
|
version = "1.20.0"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ set -eo pipefail
|
|||||||
plugin-post-app-clone-setup() {
|
plugin-post-app-clone-setup() {
|
||||||
declare OLD_APP_NAME="$1" NEW_APP_NAME="$2"
|
declare OLD_APP_NAME="$1" NEW_APP_NAME="$2"
|
||||||
|
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in $SERVICES; do
|
|
||||||
if in_links_file "$SERVICE" "$OLD_APP_NAME"; then
|
if in_links_file "$SERVICE" "$OLD_APP_NAME"; then
|
||||||
add_to_links_file "$SERVICE" "$NEW_APP_NAME"
|
add_to_links_file "$SERVICE" "$NEW_APP_NAME"
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -8,8 +8,7 @@ set -eo pipefail
|
|||||||
plugin-post-app-rename-setup() {
|
plugin-post-app-rename-setup() {
|
||||||
declare OLD_APP_NAME="$1" NEW_APP_NAME="$2"
|
declare OLD_APP_NAME="$1" NEW_APP_NAME="$2"
|
||||||
|
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in $SERVICES; do
|
|
||||||
if in_links_file "$SERVICE" "$OLD_APP_NAME"; then
|
if in_links_file "$SERVICE" "$OLD_APP_NAME"; then
|
||||||
add_to_links_file "$SERVICE" "$NEW_APP_NAME"
|
add_to_links_file "$SERVICE" "$NEW_APP_NAME"
|
||||||
fi
|
fi
|
||||||
|
|||||||
16
pre-delete
16
pre-delete
@@ -1,21 +1,13 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
source "$PLUGIN_CORE_AVAILABLE_PATH/common/functions"
|
||||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
||||||
source "$PLUGIN_BASE_PATH/common/functions"
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/functions"
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $DOKKU_TRACE ]] && set -x
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
|
|
||||||
PLUGIN_BASE_PATH="$PLUGIN_PATH"
|
|
||||||
if [[ -n $DOKKU_API_VERSION ]]; then
|
|
||||||
PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
|
|
||||||
fi
|
|
||||||
source "$PLUGIN_BASE_PATH/common/functions"
|
|
||||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/functions"
|
|
||||||
|
|
||||||
APP="$1"
|
APP="$1"
|
||||||
pushd "$PLUGIN_DATA_ROOT" >/dev/null
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in *; do
|
[[ -n "$SERVICE" ]] || continue
|
||||||
dokku_log_verbose_quiet "Unlinking from $SERVICE"
|
dokku_log_verbose_quiet "Unlinking from $SERVICE"
|
||||||
remove_from_links_file "$(basename "$SERVICE")" "$APP"
|
remove_from_links_file "$(basename "$SERVICE")" "$APP"
|
||||||
done
|
done
|
||||||
popd >/dev/null 2>&1 || pushd "/tmp" >/dev/null
|
|
||||||
exit 0
|
|
||||||
|
|||||||
@@ -7,18 +7,18 @@ set -eo pipefail
|
|||||||
|
|
||||||
plugin-pre-restore() {
|
plugin-pre-restore() {
|
||||||
declare SCHEDULER="$1" APP="$2"
|
declare SCHEDULER="$1" APP="$2"
|
||||||
|
local status
|
||||||
|
|
||||||
if [[ "$SCHEDULER" != "docker-local" ]]; then
|
if [[ "$SCHEDULER" != "docker-local" ]]; then
|
||||||
return
|
return
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in $SERVICES; do
|
|
||||||
if ! in_links_file "$SERVICE" "$APP"; then
|
if ! in_links_file "$SERVICE" "$APP"; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local status="$(service_status "$SERVICE")"
|
status="$(service_status "$SERVICE")"
|
||||||
if [[ "$status" == "running" ]]; then
|
if [[ "$status" == "running" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -7,14 +7,14 @@ set -eo pipefail
|
|||||||
|
|
||||||
plugin-pre-start() {
|
plugin-pre-start() {
|
||||||
declare APP="$1"
|
declare APP="$1"
|
||||||
|
local status
|
||||||
|
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
for SERVICE in $(fn-services-list false); do
|
||||||
for SERVICE in $SERVICES; do
|
|
||||||
if ! in_links_file "$SERVICE" "$APP"; then
|
if ! in_links_file "$SERVICE" "$APP"; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
local status="$(service_status "$SERVICE")"
|
status="$(service_status "$SERVICE")"
|
||||||
if [[ "$status" == "running" ]]; then
|
if [[ "$status" == "running" ]]; then
|
||||||
continue
|
continue
|
||||||
fi
|
fi
|
||||||
|
|||||||
@@ -27,6 +27,9 @@ service-clone-cmd() {
|
|||||||
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
|
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
|
||||||
[[ -z "$NEW_SERVICE" ]] && dokku_log_fail "Please specify a name for the new service"
|
[[ -z "$NEW_SERVICE" ]] && dokku_log_fail "Please specify a name for the new service"
|
||||||
verify_service_name "$SERVICE"
|
verify_service_name "$SERVICE"
|
||||||
|
if service_exists "$NEW_SERVICE"; then
|
||||||
|
dokku_log_fail "Invalid service name $NEW_SERVICE. Verify the service name is not already in use."
|
||||||
|
fi
|
||||||
|
|
||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
local ID="$(cat "$SERVICE_ROOT/ID")"
|
local ID="$(cat "$SERVICE_ROOT/ID")"
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ service-enter-cmd() {
|
|||||||
declare SERVICE="$1"
|
declare SERVICE="$1"
|
||||||
|
|
||||||
dokku_log_info1_quiet "Filesystem changes may not persist after container restarts"
|
dokku_log_info1_quiet "Filesystem changes may not persist after container restarts"
|
||||||
|
verify_service_name "$SERVICE"
|
||||||
service_enter "$SERVICE" "${@:2}"
|
service_enter "$SERVICE" "${@:2}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user