Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
90ab3a1191 | ||
|
|
23681960bf | ||
|
|
b8b97f0cb4 | ||
|
|
70c98338b0 | ||
|
|
872ed9c540 | ||
|
|
c85770a873 | ||
|
|
facd80f5bc | ||
|
|
bc5985881a | ||
|
|
4170c0b993 | ||
|
|
ca69e6f79d | ||
|
|
ca6b3b8815 | ||
|
|
e43904641b |
12
README.md
12
README.md
@@ -203,7 +203,7 @@ DOKKU_REDIS_LOLIPOP_PORT_6379_TCP_ADDR=172.17.0.1
|
|||||||
The following will be set on the linked application by default:
|
The following will be set on the linked application by default:
|
||||||
|
|
||||||
```
|
```
|
||||||
REDIS_URL=redis://lolipop:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
REDIS_URL=redis://:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
||||||
```
|
```
|
||||||
|
|
||||||
The host exposed here only works internally in docker containers. If you want your container to be reachable from outside, you should use the 'expose' subcommand. Another service can be linked to your app:
|
The host exposed here only works internally in docker containers. If you want your container to be reachable from outside, you should use the 'expose' subcommand. Another service can be linked to your app:
|
||||||
@@ -222,7 +222,7 @@ dokku redis:link lolipop playground
|
|||||||
This will cause `REDIS_URL` to be set as:
|
This will cause `REDIS_URL` to be set as:
|
||||||
|
|
||||||
```
|
```
|
||||||
redis2://lolipop:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
redis2://:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
||||||
```
|
```
|
||||||
|
|
||||||
### unlink the redis service from the app
|
### unlink the redis service from the app
|
||||||
@@ -312,7 +312,7 @@ dokku redis:promote <service> <app>
|
|||||||
If you have a redis service linked to an app and try to link another redis service another link environment variable will be generated automatically:
|
If you have a redis service linked to an app and try to link another redis service another link environment variable will be generated automatically:
|
||||||
|
|
||||||
```
|
```
|
||||||
DOKKU_REDIS_BLUE_URL=redis://other_service:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
DOKKU_REDIS_BLUE_URL=redis://:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
||||||
```
|
```
|
||||||
|
|
||||||
You can promote the new service to be the primary one:
|
You can promote the new service to be the primary one:
|
||||||
@@ -326,9 +326,9 @@ dokku redis:promote other_service playground
|
|||||||
This will replace `REDIS_URL` with the url from other_service and generate another environment variable to hold the previous value if necessary. You could end up with the following for example:
|
This will replace `REDIS_URL` with the url from other_service and generate another environment variable to hold the previous value if necessary. You could end up with the following for example:
|
||||||
|
|
||||||
```
|
```
|
||||||
REDIS_URL=redis://other_service:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
REDIS_URL=redis://:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
||||||
DOKKU_REDIS_BLUE_URL=redis://other_service:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
DOKKU_REDIS_BLUE_URL=redis://:ANOTHER_PASSWORD@dokku-redis-other-service:6379/other_service
|
||||||
DOKKU_REDIS_SILVER_URL=redis://lolipop:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
DOKKU_REDIS_SILVER_URL=redis://:SOME_PASSWORD@dokku-redis-lolipop:6379/lolipop
|
||||||
```
|
```
|
||||||
|
|
||||||
### start a previously stopped redis service
|
### start a previously stopped redis service
|
||||||
|
|||||||
45
bin/generate
45
bin/generate
@@ -5,12 +5,20 @@ import os
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
def compile(service, version, variable, alias, image, scheme, ports, unimplemented, dokku_version):
|
def compile(service, version, variable, alias, image, scheme, ports, sponsors, unimplemented, dokku_version):
|
||||||
|
prefix = "\n\n".join([
|
||||||
|
header(service),
|
||||||
|
description(service, image, version),
|
||||||
|
])
|
||||||
|
|
||||||
|
if len(sponsors) > 0:
|
||||||
|
prefix += "\n\n"
|
||||||
|
prefix += sponsors_section(service, sponsors)
|
||||||
|
|
||||||
return (
|
return (
|
||||||
"\n\n".join(
|
"\n\n".join(
|
||||||
[
|
[
|
||||||
header(service),
|
prefix,
|
||||||
description(service, version),
|
|
||||||
requirements_section(dokku_version),
|
requirements_section(dokku_version),
|
||||||
installation_section(service, dokku_version),
|
installation_section(service, dokku_version),
|
||||||
commands_section(service, variable, alias, image, scheme, ports, unimplemented),
|
commands_section(service, variable, alias, image, scheme, ports, unimplemented),
|
||||||
@@ -33,8 +41,26 @@ def header(service):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def description(service, version):
|
def description(service, full_image, version):
|
||||||
return f"Official {service} plugin for dokku. Currently defaults to installing [{service} {version}](https://hub.docker.com/_/{service}/)."
|
base = "_"
|
||||||
|
image = full_image
|
||||||
|
if "/" in full_image:
|
||||||
|
base = "r/" + full_image.split("/")[0]
|
||||||
|
image = full_image.split("/")[1]
|
||||||
|
|
||||||
|
return f"Official {service} plugin for dokku. Currently defaults to installing [{full_image} {version}](https://hub.docker.com/{base}/{image}/)."
|
||||||
|
|
||||||
|
|
||||||
|
def sponsors_section(service, sponsors):
|
||||||
|
if len(sponsors) == 0:
|
||||||
|
return ""
|
||||||
|
|
||||||
|
sponsor_data = ["## Sponsors", "", f"The {service} plugin was generously sponsored by the following:", ""]
|
||||||
|
sponsor_data.extend([f"- [{s}](https://github.com/{s})" for s in sponsors])
|
||||||
|
|
||||||
|
return "\n".join(
|
||||||
|
sponsor_data
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def requirements_section(dokku_version):
|
def requirements_section(dokku_version):
|
||||||
@@ -469,7 +495,14 @@ def main():
|
|||||||
if match is not None:
|
if match is not None:
|
||||||
unimplemented = [s.strip('"') for s in match.group(1).split(" ")]
|
unimplemented = [s.strip('"') for s in match.group(1).split(" ")]
|
||||||
|
|
||||||
text = compile(service, version, variable, alias, image, scheme, ports, unimplemented, "0.12.x+")
|
sponsors = []
|
||||||
|
with open("plugin.toml") as f:
|
||||||
|
for line in f.readlines():
|
||||||
|
if line.startswith("sponsors"):
|
||||||
|
sponsors = re.search("\[([\"\w\s,_-]+)\]", line).group(1)
|
||||||
|
sponsors = [s.strip("\"") for s in sponsors.split(",")]
|
||||||
|
|
||||||
|
text = compile(service, version, variable, alias, image, scheme, ports, sponsors, unimplemented, "0.12.x+")
|
||||||
|
|
||||||
base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
base_path = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
|
||||||
readme_file = os.path.join(base_path, "README.md")
|
readme_file = os.path.join(base_path, "README.md")
|
||||||
|
|||||||
@@ -188,18 +188,18 @@ service_backup() {
|
|||||||
dokku_log_fail "Provide AWS credentials or use the --use-iam flag"
|
dokku_log_fail "Provide AWS credentials or use the --use-iam flag"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
TMPDIR=$(mktemp -d --tmpdir)
|
BACKUP_TMPDIR=$(mktemp -d --tmpdir)
|
||||||
trap 'rm -rf "$TMPDIR" > /dev/null' RETURN INT TERM EXIT
|
trap 'rm -rf "$BACKUP_TMPDIR" > /dev/null' RETURN INT TERM EXIT
|
||||||
|
|
||||||
docker inspect "$ID" &>/dev/null || dokku_log_fail "Service container does not exist"
|
docker inspect "$ID" &>/dev/null || dokku_log_fail "Service container does not exist"
|
||||||
is_container_status "$ID" "Running" || dokku_log_fail "Service container is not running"
|
is_container_status "$ID" "Running" || dokku_log_fail "Service container is not running"
|
||||||
|
|
||||||
(service_export "$SERVICE" >"${TMPDIR}/export")
|
(service_export "$SERVICE" >"${BACKUP_TMPDIR}/export")
|
||||||
|
|
||||||
# Build parameter list for s3backup tool
|
# Build parameter list for s3backup tool
|
||||||
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e BUCKET_NAME=$BUCKET_NAME"
|
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e BUCKET_NAME=$BUCKET_NAME"
|
||||||
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e BACKUP_NAME=${PLUGIN_COMMAND_PREFIX}-${SERVICE}"
|
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e BACKUP_NAME=${PLUGIN_COMMAND_PREFIX}-${SERVICE}"
|
||||||
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -v ${TMPDIR}:/backup"
|
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -v ${BACKUP_TMPDIR}:/backup"
|
||||||
|
|
||||||
if [[ -f "$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION" ]]; then
|
if [[ -f "$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION" ]]; then
|
||||||
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e AWS_DEFAULT_REGION=$(cat "$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION")"
|
BACKUP_PARAMETERS="$BACKUP_PARAMETERS -e AWS_DEFAULT_REGION=$(cat "$SERVICE_BACKUP_ROOT/AWS_DEFAULT_REGION")"
|
||||||
@@ -383,7 +383,7 @@ service_info() {
|
|||||||
local flag key valid_flags
|
local flag key valid_flags
|
||||||
|
|
||||||
local flag_map=(
|
local flag_map=(
|
||||||
"--config-dir: ${SERVICE_ROOT}/config"
|
"--config-dir: ${SERVICE_ROOT}/${PLUGIN_CONFIG_SUFFIX}"
|
||||||
"--data-dir: ${SERVICE_ROOT}/data"
|
"--data-dir: ${SERVICE_ROOT}/data"
|
||||||
"--dsn: ${SERVICE_URL}"
|
"--dsn: ${SERVICE_URL}"
|
||||||
"--exposed-ports: $(service_exposed_ports "$SERVICE")"
|
"--exposed-ports: $(service_exposed_ports "$SERVICE")"
|
||||||
|
|||||||
1
config
1
config
@@ -21,6 +21,7 @@ export PLUGIN_SCHEME="redis"
|
|||||||
export PLUGIN_SERVICE="Redis"
|
export PLUGIN_SERVICE="Redis"
|
||||||
export PLUGIN_VARIABLE="REDIS"
|
export PLUGIN_VARIABLE="REDIS"
|
||||||
export PLUGIN_BASE_PATH="$PLUGIN_PATH"
|
export PLUGIN_BASE_PATH="$PLUGIN_PATH"
|
||||||
|
export PLUGIN_CONFIG_SUFFIX="config"
|
||||||
if [[ -n $DOKKU_API_VERSION ]]; then
|
if [[ -n $DOKKU_API_VERSION ]]; then
|
||||||
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
|
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
|
||||||
fi
|
fi
|
||||||
|
|||||||
12
functions
12
functions
@@ -42,13 +42,13 @@ service_create() {
|
|||||||
|
|
||||||
mkdir -p "$SERVICE_ROOT" || dokku_log_fail "Unable to create service directory"
|
mkdir -p "$SERVICE_ROOT" || dokku_log_fail "Unable to create service directory"
|
||||||
mkdir -p "$SERVICE_ROOT/data" || dokku_log_fail "Unable to create service data directory"
|
mkdir -p "$SERVICE_ROOT/data" || dokku_log_fail "Unable to create service data directory"
|
||||||
mkdir -p "$SERVICE_ROOT/config" || dokku_log_fail "Unable to create service config directory"
|
mkdir -p "$SERVICE_ROOT/$PLUGIN_CONFIG_SUFFIX" || dokku_log_fail "Unable to create service config directory"
|
||||||
touch "$LINKS_FILE"
|
touch "$LINKS_FILE"
|
||||||
|
|
||||||
if [[ -z $REDIS_CONFIG_PATH ]]; then
|
if [[ -z $REDIS_CONFIG_PATH ]]; then
|
||||||
curl -sSL "https://raw.githubusercontent.com/antirez/redis/${PLUGIN_IMAGE_VERSION:0:3}/redis.conf" >"$SERVICE_ROOT/config/redis.conf" || dokku_log_fail "Unable to download the default redis.conf to the config directory"
|
curl -sSL "https://raw.githubusercontent.com/antirez/redis/${PLUGIN_IMAGE_VERSION:0:3}/redis.conf" >"$SERVICE_ROOT/$PLUGIN_CONFIG_SUFFIX/redis.conf" || dokku_log_fail "Unable to download the default redis.conf to the config directory"
|
||||||
else
|
else
|
||||||
cp "$REDIS_CONFIG_PATH" "$SERVICE_ROOT/config/redis.conf" || dokku_log_fail "Unable to copy the ${REDIS_CONFIG_PATH} to the config directory"
|
cp "$REDIS_CONFIG_PATH" "$SERVICE_ROOT/$PLUGIN_CONFIG_SUFFIX/redis.conf" || dokku_log_fail "Unable to copy the ${REDIS_CONFIG_PATH} to the config directory"
|
||||||
fi
|
fi
|
||||||
PASSWORD=$(openssl rand -hex 32)
|
PASSWORD=$(openssl rand -hex 32)
|
||||||
if [[ -n "$SERVICE_PASSWORD" ]]; then
|
if [[ -n "$SERVICE_PASSWORD" ]]; then
|
||||||
@@ -57,7 +57,7 @@ service_create() {
|
|||||||
fi
|
fi
|
||||||
echo "$PASSWORD" >"$SERVICE_ROOT/PASSWORD"
|
echo "$PASSWORD" >"$SERVICE_ROOT/PASSWORD"
|
||||||
chmod 640 "$SERVICE_ROOT/PASSWORD"
|
chmod 640 "$SERVICE_ROOT/PASSWORD"
|
||||||
sed -i.bak "s/# requirepass.*/requirepass ${PASSWORD}/" "$SERVICE_ROOT/config/redis.conf" && rm "$SERVICE_ROOT/config/redis.conf.bak"
|
sed -i.bak "s/# requirepass.*/requirepass ${PASSWORD}/" "$SERVICE_ROOT/$PLUGIN_CONFIG_SUFFIX/redis.conf" && rm "$SERVICE_ROOT/$PLUGIN_CONFIG_SUFFIX/redis.conf.bak"
|
||||||
|
|
||||||
[[ -n "$SERVICE_CUSTOM_ENV" ]] && REDIS_CUSTOM_ENV="$SERVICE_CUSTOM_ENV"
|
[[ -n "$SERVICE_CUSTOM_ENV" ]] && REDIS_CUSTOM_ENV="$SERVICE_CUSTOM_ENV"
|
||||||
if [[ -n $REDIS_CUSTOM_ENV ]]; then
|
if [[ -n $REDIS_CUSTOM_ENV ]]; then
|
||||||
@@ -76,7 +76,7 @@ service_create_container() {
|
|||||||
local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
|
local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
|
||||||
local SERVICE_NAME="$(get_service_name "$SERVICE")"
|
local SERVICE_NAME="$(get_service_name "$SERVICE")"
|
||||||
|
|
||||||
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/config:/usr/local/etc/redis" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=redis "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" redis-server /usr/local/etc/redis/redis.conf --bind 0.0.0.0)
|
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/$PLUGIN_CONFIG_SUFFIX:/usr/local/etc/redis" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=redis "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" redis-server /usr/local/etc/redis/redis.conf --bind 0.0.0.0)
|
||||||
echo "$ID" >"$SERVICE_ROOT/ID"
|
echo "$ID" >"$SERVICE_ROOT/ID"
|
||||||
|
|
||||||
dokku_log_verbose_quiet "Waiting for container to be ready"
|
dokku_log_verbose_quiet "Waiting for container to be ready"
|
||||||
@@ -155,5 +155,5 @@ service_url() {
|
|||||||
local SERVICE="$1"
|
local SERVICE="$1"
|
||||||
local PASSWORD="$(service_password "$SERVICE")"
|
local PASSWORD="$(service_password "$SERVICE")"
|
||||||
local SERVICE_DNS_HOSTNAME="$(service_dns_hostname "$SERVICE")"
|
local SERVICE_DNS_HOSTNAME="$(service_dns_hostname "$SERVICE")"
|
||||||
echo "$PLUGIN_SCHEME://$SERVICE:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}"
|
echo "$PLUGIN_SCHEME://:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -76,10 +76,10 @@ fn-help-contents() {
|
|||||||
|
|
||||||
fn-help-contents-subcommand() {
|
fn-help-contents-subcommand() {
|
||||||
declare SUBCOMMAND="$1" FULL_OUTPUT="$2"
|
declare SUBCOMMAND="$1" FULL_OUTPUT="$2"
|
||||||
local TMPDIR=$(mktemp -d --tmpdir)
|
local HELP_TMPDIR=$(mktemp -d --tmpdir)
|
||||||
local UNCLEAN_FILE="${TMPDIR}/cmd-unclean" CLEAN_FILE="${TMPDIR}/cmd-clean"
|
local UNCLEAN_FILE="${HELP_TMPDIR}/cmd-unclean" CLEAN_FILE="${HELP_TMPDIR}/cmd-clean"
|
||||||
local BOLD CMD_OUTPUT CYAN EXAMPLE LIGHT_GRAY NORMAL
|
local BOLD CMD_OUTPUT CYAN EXAMPLE LIGHT_GRAY NORMAL
|
||||||
trap 'rm -rf "$TMPDIR" > /dev/null' RETURN INT TERM EXIT
|
trap 'rm -rf "$HELP_TMPDIR" > /dev/null' RETURN INT TERM EXIT
|
||||||
|
|
||||||
rm -rf "$UNCLEAN_FILE" "$CLEAN_FILE"
|
rm -rf "$UNCLEAN_FILE" "$CLEAN_FILE"
|
||||||
cat "$SUBCOMMAND_ROOT/$SUBCOMMAND" >"$UNCLEAN_FILE"
|
cat "$SUBCOMMAND_ROOT/$SUBCOMMAND" >"$UNCLEAN_FILE"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku redis service plugin"
|
description = "dokku redis service plugin"
|
||||||
version = "1.12.5"
|
version = "1.13.0"
|
||||||
[plugin.config]
|
[plugin.config]
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ service-destroy-cmd() {
|
|||||||
service_container_rm "$SERVICE"
|
service_container_rm "$SERVICE"
|
||||||
|
|
||||||
dokku_log_verbose_quiet "Removing data"
|
dokku_log_verbose_quiet "Removing data"
|
||||||
docker run --rm -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/config:/config" "$PLUGIN_BUSYBOX_IMAGE" chmod 777 -R /config /data
|
docker run --rm -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/$PLUGIN_CONFIG_SUFFIX:/config" "$PLUGIN_BUSYBOX_IMAGE" chmod 777 -R /config /data
|
||||||
rm -rf "$SERVICE_ROOT"
|
rm -rf "$SERVICE_ROOT"
|
||||||
|
|
||||||
dokku_log_info2 "$PLUGIN_SERVICE container deleted: $SERVICE"
|
dokku_log_info2 "$PLUGIN_SERVICE container deleted: $SERVICE"
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ service-link-cmd() {
|
|||||||
#E
|
#E
|
||||||
#E the following will be set on the linked application by default:
|
#E the following will be set on the linked application by default:
|
||||||
#E
|
#E
|
||||||
#E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://lolipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
#E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
||||||
#E
|
#E
|
||||||
#E the host exposed here only works internally in docker containers.
|
#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 if you want your container to be reachable from outside, you should
|
||||||
@@ -37,7 +37,7 @@ service-link-cmd() {
|
|||||||
#E dokku $PLUGIN_COMMAND_PREFIX:link lolipop playground
|
#E dokku $PLUGIN_COMMAND_PREFIX:link lolipop playground
|
||||||
#E this will cause ${PLUGIN_DEFAULT_ALIAS}_URL to be set as:
|
#E this will cause ${PLUGIN_DEFAULT_ALIAS}_URL to be set as:
|
||||||
#E
|
#E
|
||||||
#E ${PLUGIN_SCHEME}2://lolipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
#E ${PLUGIN_SCHEME}2://:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
||||||
#A service, service to run command against
|
#A service, service to run command against
|
||||||
#A app, app 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 -a|--alias "BLUE_DATABASE", an alternative alias to use for linking to an app via environment variable
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ service-promote-cmd() {
|
|||||||
#E if you have a $PLUGIN_COMMAND_PREFIX service linked to an app and try to link another $PLUGIN_COMMAND_PREFIX service
|
#E if you have a $PLUGIN_COMMAND_PREFIX service linked to an app and try to link another $PLUGIN_COMMAND_PREFIX service
|
||||||
#E another link environment variable will be generated automatically:
|
#E another link environment variable will be generated automatically:
|
||||||
#E
|
#E
|
||||||
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_BLUE_URL=${PLUGIN_SCHEME}://other_service:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_BLUE_URL=${PLUGIN_SCHEME}://:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
||||||
#E
|
#E
|
||||||
#E you can promote the new service to be the primary one
|
#E you can promote the new service to be the primary one
|
||||||
#E > NOTE: this will restart your app
|
#E > NOTE: this will restart your app
|
||||||
@@ -18,9 +18,9 @@ service-promote-cmd() {
|
|||||||
#E another environment variable to hold the previous value if necessary.
|
#E another environment variable to hold the previous value if necessary.
|
||||||
#E you could end up with the following for example:
|
#E you could end up with the following for example:
|
||||||
#E
|
#E
|
||||||
#E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://other_service:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
#E ${PLUGIN_DEFAULT_ALIAS}_URL=${PLUGIN_SCHEME}://:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
||||||
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_BLUE_URL=${PLUGIN_SCHEME}://other_service:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_BLUE_URL=${PLUGIN_SCHEME}://:ANOTHER_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-other-service:${PLUGIN_DATASTORE_PORTS[0]}/other_service
|
||||||
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_SILVER_URL=${PLUGIN_SCHEME}://lolipop:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
#E DOKKU_${PLUGIN_DEFAULT_ALIAS}_SILVER_URL=${PLUGIN_SCHEME}://:SOME_PASSWORD@dokku-${PLUGIN_COMMAND_PREFIX}-lolipop:${PLUGIN_DATASTORE_PORTS[0]}/lolipop
|
||||||
#A service, service to run command against
|
#A service, service to run command against
|
||||||
#A app, app to run command against
|
#A app, app to run command against
|
||||||
declare desc="promote service <service> as ${PLUGIN_DEFAULT_ALIAS}_URL in <app>"
|
declare desc="promote service <service> as ${PLUGIN_DEFAULT_ALIAS}_URL in <app>"
|
||||||
|
|||||||
@@ -22,21 +22,21 @@ teardown() {
|
|||||||
@test "($PLUGIN_COMMAND_PREFIX:info) success" {
|
@test "($PLUGIN_COMMAND_PREFIX:info) success" {
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l
|
run dokku "$PLUGIN_COMMAND_PREFIX:info" l
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
assert_contains "${lines[*]}" "redis://l:$password@dokku-redis-l:6379"
|
assert_contains "${lines[*]}" "redis://:$password@dokku-redis-l:6379"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:info) replaces underscores by dash in hostname" {
|
@test "($PLUGIN_COMMAND_PREFIX:info) replaces underscores by dash in hostname" {
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:create" test_with_underscores
|
dokku "$PLUGIN_COMMAND_PREFIX:create" test_with_underscores
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" test_with_underscores
|
run dokku "$PLUGIN_COMMAND_PREFIX:info" test_with_underscores
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/test_with_underscores/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/test_with_underscores/PASSWORD")"
|
||||||
assert_contains "${lines[*]}" "redis://test_with_underscores:$password@dokku-redis-test-with-underscores:6379"
|
assert_contains "${lines[*]}" "redis://:$password@dokku-redis-test-with-underscores:6379"
|
||||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" test_with_underscores
|
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" test_with_underscores
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:info) success with flag" {
|
@test "($PLUGIN_COMMAND_PREFIX:info) success with flag" {
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --dsn
|
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --dsn
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
assert_output "redis://l:$password@dokku-redis-l:6379"
|
assert_output "redis://:$password@dokku-redis-l:6379"
|
||||||
|
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --config-dir
|
run dokku "$PLUGIN_COMMAND_PREFIX:info" l --config-dir
|
||||||
assert_success
|
assert_success
|
||||||
|
|||||||
@@ -63,7 +63,7 @@ teardown() {
|
|||||||
echo "status: $status"
|
echo "status: $status"
|
||||||
url=$(dokku config:get my_app REDIS_URL)
|
url=$(dokku config:get my_app REDIS_URL)
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
assert_contains "$url" "redis://l:$password@dokku-redis-l:6379"
|
assert_contains "$url" "redis://:$password@dokku-redis-l:6379"
|
||||||
assert_success
|
assert_success
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
||||||
}
|
}
|
||||||
@@ -96,7 +96,7 @@ teardown() {
|
|||||||
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
||||||
url=$(dokku config:get my_app REDIS_URL)
|
url=$(dokku config:get my_app REDIS_URL)
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
assert_contains "$url" "redis2://l:$password@dokku-redis-l:6379"
|
assert_contains "$url" "redis2://:$password@dokku-redis-l:6379"
|
||||||
assert_success
|
assert_success
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
||||||
}
|
}
|
||||||
@@ -113,7 +113,7 @@ teardown() {
|
|||||||
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app --alias "ALIAS"
|
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app --alias "ALIAS"
|
||||||
url=$(dokku config:get my_app ALIAS_URL)
|
url=$(dokku config:get my_app ALIAS_URL)
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
assert_contains "$url" "redis://l:$password@dokku-redis-l:6379"
|
assert_contains "$url" "redis://:$password@dokku-redis-l:6379"
|
||||||
assert_success
|
assert_success
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:unlink" l my_app
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -40,15 +40,15 @@ teardown() {
|
|||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:promote) changes REDIS_URL" {
|
@test "($PLUGIN_COMMAND_PREFIX:promote) changes REDIS_URL" {
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
dokku config:set my_app "REDIS_URL=redis://u:p@host:6379/db" "DOKKU_REDIS_BLUE_URL=redis://l:$password@dokku-redis-l:6379"
|
dokku config:set my_app "REDIS_URL=redis://:p@host:6379/db" "DOKKU_REDIS_BLUE_URL=redis://:$password@dokku-redis-l:6379"
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
||||||
url=$(dokku config:get my_app REDIS_URL)
|
url=$(dokku config:get my_app REDIS_URL)
|
||||||
assert_equal "$url" "redis://l:$password@dokku-redis-l:6379"
|
assert_equal "$url" "redis://:$password@dokku-redis-l:6379"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:promote) creates new config url when needed" {
|
@test "($PLUGIN_COMMAND_PREFIX:promote) creates new config url when needed" {
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
dokku config:set my_app "REDIS_URL=redis://u:p@host:6379/db" "DOKKU_REDIS_BLUE_URL=redis://l:$password@dokku-redis-l:6379"
|
dokku config:set my_app "REDIS_URL=redis://:p@host:6379/db" "DOKKU_REDIS_BLUE_URL=redis://:$password@dokku-redis-l:6379"
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
||||||
run dokku config my_app
|
run dokku config my_app
|
||||||
assert_contains "${lines[*]}" "DOKKU_REDIS_"
|
assert_contains "${lines[*]}" "DOKKU_REDIS_"
|
||||||
@@ -56,8 +56,8 @@ teardown() {
|
|||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:promote) uses REDIS_DATABASE_SCHEME variable" {
|
@test "($PLUGIN_COMMAND_PREFIX:promote) uses REDIS_DATABASE_SCHEME variable" {
|
||||||
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
password="$(sudo cat "$PLUGIN_DATA_ROOT/l/PASSWORD")"
|
||||||
dokku config:set my_app "REDIS_DATABASE_SCHEME=redis2" "REDIS_URL=redis://u:p@host:6379" "DOKKU_REDIS_BLUE_URL=redis2://l:$password@dokku-redis-l:6379"
|
dokku config:set my_app "REDIS_DATABASE_SCHEME=redis2" "REDIS_URL=redis://:p@host:6379" "DOKKU_REDIS_BLUE_URL=redis2://:$password@dokku-redis-l:6379"
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:promote" l my_app
|
||||||
url=$(dokku config:get my_app REDIS_URL)
|
url=$(dokku config:get my_app REDIS_URL)
|
||||||
assert_equal "$url" "redis2://l:$password@dokku-redis-l:6379"
|
assert_equal "$url" "redis2://:$password@dokku-redis-l:6379"
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user