Compare commits
23 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9bc7830c0c | ||
|
|
150591eb75 | ||
|
|
417311e9fb | ||
|
|
6fe12abbb5 | ||
|
|
bb27a06da9 | ||
|
|
068145b46e | ||
|
|
c5442f9754 | ||
|
|
07c36b7e6f | ||
|
|
b2b39c86f1 | ||
|
|
0a0e6c3140 | ||
|
|
007acf952a | ||
|
|
28275d777d | ||
|
|
a243d3cec9 | ||
|
|
312d9298c7 | ||
|
|
25ad144b54 | ||
|
|
77573a97ff | ||
|
|
5849f1f19f | ||
|
|
b3eb9ed085 | ||
|
|
86e7d53749 | ||
|
|
ba5b90349b | ||
|
|
46bd7f534f | ||
|
|
f2342ed6fc | ||
|
|
b1e5298be0 |
@@ -2,8 +2,8 @@ dist: trusty
|
|||||||
language: bash
|
language: bash
|
||||||
env:
|
env:
|
||||||
- DOKKU_VERSION=master
|
- DOKKU_VERSION=master
|
||||||
- DOKKU_VERSION=v0.14.0
|
- DOKKU_VERSION=v0.17.0
|
||||||
- DOKKU_VERSION=v0.12.0
|
|
||||||
install: make setup
|
install: make setup
|
||||||
|
before_script: sudo sysctl -w vm.max_map_count=262144
|
||||||
script: make test
|
script: make test
|
||||||
after_failure: make report
|
after_failure: make report
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# dokku redis [](https://travis-ci.org/dokku/dokku-redis) [](https://webchat.freenode.net/?channels=dokku)
|
# dokku redis [](https://travis-ci.org/dokku/dokku-redis) [](https://webchat.freenode.net/?channels=dokku)
|
||||||
|
|
||||||
Official redis plugin for dokku. Currently defaults to installing [redis 5.0.4](https://hub.docker.com/_/redis/).
|
Official redis plugin for dokku. Currently defaults to installing [redis 5.0.7](https://hub.docker.com/_/redis/).
|
||||||
|
|
||||||
## requirements
|
## requirements
|
||||||
|
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ service_backup() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
docker run --rm $BACKUP_PARAMETERS dokku/s3backup:0.9.4
|
docker run --rm $BACKUP_PARAMETERS dokku/s3backup:0.10.0
|
||||||
}
|
}
|
||||||
|
|
||||||
service_backup_auth() {
|
service_backup_auth() {
|
||||||
@@ -468,7 +468,7 @@ service_link() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
service_linked_apps() {
|
service_linked_apps() {
|
||||||
declare desc="Lists all applications linked to a service"
|
declare desc="Lists all apps linked to a service for info output"
|
||||||
declare SERVICE="$1"
|
declare SERVICE="$1"
|
||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
local LINKS_FILE="$SERVICE_ROOT/LINKS"
|
local LINKS_FILE="$SERVICE_ROOT/LINKS"
|
||||||
@@ -479,6 +479,18 @@ service_linked_apps() {
|
|||||||
tr '\n' ' ' <"$LINKS_FILE"
|
tr '\n' ' ' <"$LINKS_FILE"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
service_links() {
|
||||||
|
declare desc="Lists all apps linked to a service"
|
||||||
|
declare SERVICE="$1"
|
||||||
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
|
local LINKS_FILE="$SERVICE_ROOT/LINKS"
|
||||||
|
|
||||||
|
touch "$LINKS_FILE"
|
||||||
|
[[ -z $(<"$LINKS_FILE") ]] && return 0
|
||||||
|
|
||||||
|
cat "$LINKS_FILE"
|
||||||
|
}
|
||||||
|
|
||||||
service_list() {
|
service_list() {
|
||||||
declare desc="Lists all services and their status"
|
declare desc="Lists all services and their status"
|
||||||
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
|
||||||
@@ -586,6 +598,26 @@ service_parse_args() {
|
|||||||
shift "$((OPTIND - 1))" # remove options from positional parameters
|
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_FILE" ]]; 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_FILE" ]]; then
|
||||||
|
cat "$PASSWORD_FILE"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
service_port_expose() {
|
service_port_expose() {
|
||||||
declare desc="Wrapper for exposing service ports"
|
declare desc="Wrapper for exposing service ports"
|
||||||
declare SERVICE="$1"
|
declare SERVICE="$1"
|
||||||
@@ -657,7 +689,7 @@ service_port_unpause() {
|
|||||||
echo "${PORTS[@]}" >"$PORT_FILE"
|
echo "${PORTS[@]}" >"$PORT_FILE"
|
||||||
|
|
||||||
# shellcheck disable=SC2046
|
# shellcheck disable=SC2046
|
||||||
docker run -d --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" --name "$EXPOSED_NAME" $(docker_ports_options "${PORTS[@]}") --restart always --label dokku=ambassador --label "dokku.ambassador=$PLUGIN_COMMAND_PREFIX" dokku/ambassador:0.2.0 >/dev/null
|
docker run -d --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" --name "$EXPOSED_NAME" $(docker_ports_options "${PORTS[@]}") --restart always --label dokku=ambassador --label "dokku.ambassador=$PLUGIN_COMMAND_PREFIX" dokku/ambassador:0.3.0 >/dev/null
|
||||||
if [[ "$LOG_FAIL" == "true" ]]; then
|
if [[ "$LOG_FAIL" == "true" ]]; then
|
||||||
dokku_log_info1 "Service $SERVICE exposed on port(s) [container->host]: $(service_exposed_ports "$SERVICE")"
|
dokku_log_info1 "Service $SERVICE exposed on port(s) [container->host]: $(service_exposed_ports "$SERVICE")"
|
||||||
fi
|
fi
|
||||||
|
|||||||
2
config
2
config
@@ -1,6 +1,6 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
export REDIS_IMAGE=${REDIS_IMAGE:="redis"}
|
export REDIS_IMAGE=${REDIS_IMAGE:="redis"}
|
||||||
export REDIS_IMAGE_VERSION=${REDIS_IMAGE_VERSION:="5.0.4"}
|
export REDIS_IMAGE_VERSION=${REDIS_IMAGE_VERSION:="5.0.7"}
|
||||||
export REDIS_ROOT=${REDIS_ROOT:="$DOKKU_LIB_ROOT/services/redis"}
|
export REDIS_ROOT=${REDIS_ROOT:="$DOKKU_LIB_ROOT/services/redis"}
|
||||||
export REDIS_HOST_ROOT=${REDIS_HOST_ROOT:=$REDIS_ROOT}
|
export REDIS_HOST_ROOT=${REDIS_HOST_ROOT:=$REDIS_ROOT}
|
||||||
|
|
||||||
|
|||||||
20
functions
20
functions
@@ -80,7 +80,7 @@ service_create_container() {
|
|||||||
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"
|
||||||
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokku/wait:0.3.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
|
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" dokku/wait:0.4.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
|
||||||
|
|
||||||
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
|
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
|
||||||
service_info "$SERVICE"
|
service_info "$SERVICE"
|
||||||
@@ -93,7 +93,16 @@ service_export() {
|
|||||||
local PASSWORD="$(service_password "$SERVICE")"
|
local PASSWORD="$(service_password "$SERVICE")"
|
||||||
|
|
||||||
[[ -n $SSH_TTY ]] && stty -opost
|
[[ -n $SSH_TTY ]] && stty -opost
|
||||||
docker exec "$SERVICE_NAME" bash -c "echo SAVE | redis-cli -a ${PASSWORD}" >/dev/null 2>&1
|
LASTSAVE1=$(docker exec "$SERVICE_NAME" bash -c "echo LASTSAVE | redis-cli -a ${PASSWORD}")
|
||||||
|
docker exec "$SERVICE_NAME" bash -c "echo BGSAVE | redis-cli -a ${PASSWORD}" >/dev/null 2>&1
|
||||||
|
LASTSAVE2=$(docker exec "$SERVICE_NAME" bash -c "echo LASTSAVE | redis-cli -a ${PASSWORD}")
|
||||||
|
|
||||||
|
until [[ "$LASTSAVE1" != "$LASTSAVE2" ]];
|
||||||
|
do
|
||||||
|
LASTSAVE2=$(docker exec "$SERVICE_NAME" bash -c "echo LASTSAVE | redis-cli -a ${PASSWORD}")
|
||||||
|
sleep 5
|
||||||
|
done
|
||||||
|
|
||||||
docker exec "$SERVICE_NAME" cat /data/dump.rdb
|
docker exec "$SERVICE_NAME" cat /data/dump.rdb
|
||||||
status=$?
|
status=$?
|
||||||
[[ -n $SSH_TTY ]] && stty opost
|
[[ -n $SSH_TTY ]] && stty opost
|
||||||
@@ -142,13 +151,6 @@ service_start() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
service_password() {
|
|
||||||
local SERVICE="$1"
|
|
||||||
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
|
||||||
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
|
|
||||||
echo "$PASSWORD"
|
|
||||||
}
|
|
||||||
|
|
||||||
service_url() {
|
service_url() {
|
||||||
local SERVICE="$1"
|
local SERVICE="$1"
|
||||||
local PASSWORD="$(service_password "$SERVICE")"
|
local PASSWORD="$(service_password "$SERVICE")"
|
||||||
|
|||||||
8
install
8
install
@@ -17,10 +17,10 @@ plugin-install() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pull-docker-image "${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION}"
|
pull-docker-image "${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION}"
|
||||||
pull-docker-image "dokku/ambassador:0.2.0"
|
pull-docker-image "busybox:1.31.0-uclibc"
|
||||||
pull-docker-image "dokku/wait:0.3.0"
|
pull-docker-image "dokku/ambassador:0.3.0"
|
||||||
pull-docker-image "dokku/s3backup:0.9.4"
|
pull-docker-image "dokku/s3backup:0.10.0"
|
||||||
pull-docker-image "busybox:1.30.1-uclibc"
|
pull-docker-image "dokku/wait:0.4.0"
|
||||||
|
|
||||||
mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory"
|
mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory"
|
||||||
chown dokku:dokku "$PLUGIN_DATA_ROOT"
|
chown dokku:dokku "$PLUGIN_DATA_ROOT"
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
[plugin]
|
[plugin]
|
||||||
description = "dokku redis service plugin"
|
description = "dokku redis service plugin"
|
||||||
version = "1.8.1"
|
version = "1.10.1"
|
||||||
[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" busybox:1.30.1-uclibc chmod 777 -R /config /data
|
docker run --rm -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/config:/config" busybox:1.31.0-uclibc 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"
|
||||||
|
|||||||
24
subcommands/links
Executable file
24
subcommands/links
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/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"
|
||||||
|
|
||||||
|
service-links-cmd() {
|
||||||
|
#E list all apps linked to the 'lolipop' $PLUGIN_COMMAND_PREFIX service.
|
||||||
|
#E dokku $PLUGIN_COMMAND_PREFIX:links lolipop
|
||||||
|
#A service, service to run command against
|
||||||
|
declare desc="list all apps linked to the $PLUGIN_SERVICE service"
|
||||||
|
local cmd="$PLUGIN_COMMAND_PREFIX:links" argv=("$@")
|
||||||
|
[[ ${argv[0]} == "$cmd" ]] && shift 1
|
||||||
|
declare SERVICE="$1"
|
||||||
|
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
|
||||||
|
local LINKS_FILE="$SERVICE_ROOT/LINKS"
|
||||||
|
|
||||||
|
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
|
||||||
|
verify_service_name "$SERVICE"
|
||||||
|
service_links "$SERVICE"
|
||||||
|
}
|
||||||
|
|
||||||
|
service-links-cmd "$@"
|
||||||
@@ -11,20 +11,20 @@ teardown() {
|
|||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:list) with no exposed ports, no linked apps" {
|
@test "($PLUGIN_COMMAND_PREFIX:list) with no exposed ports, no linked apps" {
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||||
assert_contains "${lines[*]}" "l redis:5.0.4 running - -"
|
assert_contains "${lines[*]}" "l redis:5.0.7 running - -"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:list) with exposed ports" {
|
@test "($PLUGIN_COMMAND_PREFIX:list) with exposed ports" {
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242
|
dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||||
assert_contains "${lines[*]}" "l redis:5.0.4 running 6379->4242 -"
|
assert_contains "${lines[*]}" "l redis:5.0.7 running 6379->4242 -"
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:list) with linked app" {
|
@test "($PLUGIN_COMMAND_PREFIX:list) with linked app" {
|
||||||
dokku apps:create my_app
|
dokku apps:create my_app
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||||
assert_contains "${lines[*]}" "l redis:5.0.4 running - my_app"
|
assert_contains "${lines[*]}" "l redis:5.0.7 running - my_app"
|
||||||
dokku --force apps:destroy my_app
|
dokku --force apps:destroy my_app
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,10 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $TRACE ]] && set -x
|
[[ $TRACE ]] && set -x
|
||||||
|
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 762E3157
|
||||||
|
echo "deb http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" | sudo tee /etc/apt/sources.list.d/nginx.list
|
||||||
|
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
|
||||||
|
|
||||||
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
|
wget https://raw.githubusercontent.com/dokku/dokku/master/bootstrap.sh
|
||||||
if [[ "$DOKKU_VERSION" == "master" ]]; then
|
if [[ "$DOKKU_VERSION" == "master" ]]; then
|
||||||
sudo bash bootstrap.sh
|
sudo bash bootstrap.sh
|
||||||
@@ -13,9 +17,10 @@ export DOKKU_LIB_ROOT="/var/lib/dokku"
|
|||||||
export DOKKU_PLUGINS_ROOT="$DOKKU_LIB_ROOT/plugins/available"
|
export DOKKU_PLUGINS_ROOT="$DOKKU_LIB_ROOT/plugins/available"
|
||||||
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
|
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
|
||||||
sudo rm -rf "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX"
|
sudo rm -rf "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX"
|
||||||
sudo mkdir -p "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands"
|
sudo mkdir -p "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands" "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/scripts"
|
||||||
sudo find ./ -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" \;
|
sudo find ./ -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX" \;
|
||||||
sudo find ./subcommands -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands" \;
|
[[ -d "./scripts" ]] && sudo find ./scripts -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/scripts" \;
|
||||||
|
[[ -d "./subcommands" ]] && sudo find ./subcommands -maxdepth 1 -type f -exec cp '{}' "$DOKKU_PLUGINS_ROOT/$PLUGIN_COMMAND_PREFIX/subcommands" \;
|
||||||
sudo mkdir -p "$PLUGIN_CONFIG_ROOT" "$PLUGIN_DATA_ROOT"
|
sudo mkdir -p "$PLUGIN_CONFIG_ROOT" "$PLUGIN_DATA_ROOT"
|
||||||
sudo dokku plugin:enable "$PLUGIN_COMMAND_PREFIX"
|
sudo dokku plugin:enable "$PLUGIN_COMMAND_PREFIX"
|
||||||
sudo dokku plugin:install
|
sudo dokku plugin:install
|
||||||
|
|||||||
Reference in New Issue
Block a user