Compare commits

...

34 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
fb1b189aea Release 1.11.1 2020-03-06 10:20:27 -05:00
Jose Diaz-Gonzalez
e216b97c23 fix: correct service title 2020-03-06 10:19:43 -05:00
Jose Diaz-Gonzalez
0c210e64f3 Release 1.11.0 2020-03-03 16:05:40 -05:00
Jose Diaz-Gonzalez
bc9874bc49 refactor: drop full info from :list command
This can be fetched from :info if necessary, and slows down the list quite a bit.
2020-03-03 16:02:51 -05:00
Jose Diaz-Gonzalez
b7cfbd37b4 fix: speed up service_status by reducing container status calls 2020-03-03 15:57:21 -05:00
Jose Diaz-Gonzalez
0ecf4f7cfd Release 1.10.4 2019-12-27 16:57:56 -05:00
Jose Diaz-Gonzalez
3bfcb5bc2c chore: update dokku/wait version 2019-12-27 16:57:13 -05:00
Jose Diaz-Gonzalez
0fe6933897 Release 1.10.3 2019-12-27 16:56:17 -05:00
Jose Diaz-Gonzalez
0cec2f2119 chore: update dokku/ambassador version 2019-12-27 16:55:26 -05:00
Jose Diaz-Gonzalez
3dcf263b56 Release 1.10.2 2019-12-27 16:54:21 -05:00
Jose Diaz-Gonzalez
233b03e7ca chore: update dokku/s3backup version 2019-12-27 16:53:23 -05:00
Jose Diaz-Gonzalez
9bc7830c0c Release 1.10.1 2019-11-22 19:17:09 -05:00
Jose Diaz-Gonzalez
150591eb75 feat: update patch release of redis 2019-11-22 19:16:55 -05:00
Jose Diaz-Gonzalez
417311e9fb Release 1.10.0 2019-09-19 15:29:17 -04:00
Jose Diaz-Gonzalez
6fe12abbb5 Merge pull request #139 from plotly/11839-modify-SAVE-call
Modify export command to use BGSAVE.
2019-09-19 15:28:54 -04:00
Jose Diaz-Gonzalez
bb27a06da9 Release 1.9.1 2019-09-19 15:17:48 -04:00
V. Anastassiou
068145b46e Modify export command to use BGSAVE. 2019-09-19 13:40:28 -04:00
Jose Diaz-Gonzalez
c5442f9754 Delete empty 2019-09-19 13:28:28 -04:00
Jose Diaz-Gonzalez
07c36b7e6f Merge pull request #141 from dokku/test-ci
fix: import the missing key and install nginx from upstream
2019-09-19 13:28:05 -04:00
Jose Diaz-Gonzalez
b2b39c86f1 fix: import the missing key and install nginx from upstream 2019-09-19 12:59:58 -04:00
Jose Diaz-Gonzalez
0a0e6c3140 fix: add missing ampersands 2019-07-30 10:51:51 -04:00
Jose Diaz-Gonzalez
007acf952a chore: create scripts directory as necessary 2019-07-30 10:46:00 -04:00
Jose Diaz-Gonzalez
28275d777d feat: skip subcommand copy if no subcommands directory exists 2019-07-29 22:03:01 -04:00
Jose Diaz-Gonzalez
a243d3cec9 Release 1.9.0 2019-07-15 15:00:46 -07:00
Jose Diaz-Gonzalez
312d9298c7 feat: add service:links command
This allows users to script against apps that are linked to a given service
2019-07-15 14:59:05 -07:00
Jose Diaz-Gonzalez
25ad144b54 Merge pull request #134 from dokku/upgrade-version
Upgrade docker image versions
2019-07-15 14:18:00 -07:00
Jose Diaz-Gonzalez
77573a97ff chore: increase vm.max_map_count
This is mainly used for elasticsearch but adding it to the generic test suite for all datastore plugins makes it easier to copy the travis config to each plugin.
2019-07-12 13:43:57 -07:00
Jose Diaz-Gonzalez
5849f1f19f fix: use correct variable for checking for password file 2019-07-12 12:56:37 -07:00
Jose Diaz-Gonzalez
b3eb9ed085 chore: update build targets 2019-07-11 16:35:06 -07:00
Jose Diaz-Gonzalez
86e7d53749 chore: move to helper functions for fetching passwords 2019-07-11 16:34:35 -07:00
Jose Diaz-Gonzalez
ba5b90349b chore: reorder images 2019-07-11 14:32:49 -07:00
Jose Diaz-Gonzalez
46bd7f534f feat: update ambassador, s3backup, and wait images 2019-07-11 14:31:47 -07:00
Jose Diaz-Gonzalez
f2342ed6fc feat: upgrade busybox to 1.31.0-uclibc 2019-07-11 13:36:41 -07:00
Jose Diaz-Gonzalez
b1e5298be0 feat: upgrade to 5.0.5 2019-07-11 13:19:34 -07:00
11 changed files with 98 additions and 44 deletions

View File

@@ -2,8 +2,8 @@ dist: trusty
language: bash
env:
- DOKKU_VERSION=master
- DOKKU_VERSION=v0.14.0
- DOKKU_VERSION=v0.12.0
- DOKKU_VERSION=v0.17.0
install: make setup
before_script: sudo sysctl -w vm.max_map_count=262144
script: make test
after_failure: make report

View File

@@ -1,6 +1,6 @@
# dokku redis [![Build Status](https://img.shields.io/travis/dokku/dokku-redis.svg?branch=master "Build Status")](https://travis-ci.org/dokku/dokku-redis) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg "IRC Freenode")](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

View File

@@ -217,7 +217,7 @@ service_backup() {
fi
# shellcheck disable=SC2086
docker run --rm $BACKUP_PARAMETERS dokku/s3backup:0.9.4
docker run --rm $BACKUP_PARAMETERS dokku/s3backup:0.10.1
}
service_backup_auth() {
@@ -468,7 +468,7 @@ service_link() {
}
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"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local LINKS_FILE="$SERVICE_ROOT/LINKS"
@@ -479,22 +479,31 @@ service_linked_apps() {
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() {
declare desc="Lists all services and their status"
local SERVICES=$(ls "$PLUGIN_DATA_ROOT" 2>/dev/null)
if [[ -z $SERVICES ]]; then
dokku_log_warn "There are no $PLUGIN_SERVICE services"
else
LIST=""
if [[ -z "$DOKKU_QUIET_OUTPUT" ]]; then
LIST="NAME,VERSION,STATUS,EXPOSED PORTS,LINKS\n"
fi
for SERVICE in $SERVICES; do
LIST+="$SERVICE,$(service_version "$SERVICE"),$(service_status "$SERVICE"),$(service_exposed_ports "$SERVICE"),$(service_linked_apps "$SERVICE")\n"
done
printf "%b" "$LIST" | column -t -s,
return
fi
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
for SERVICE in $SERVICES; do
echo "$SERVICE"
done
}
service_logs() {
@@ -586,6 +595,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_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() {
declare desc="Wrapper for exposing service ports"
declare SERVICE="$1"
@@ -657,7 +686,7 @@ service_port_unpause() {
echo "${PORTS[@]}" >"$PORT_FILE"
# 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.1 >/dev/null
if [[ "$LOG_FAIL" == "true" ]]; then
dokku_log_info1 "Service $SERVICE exposed on port(s) [container->host]: $(service_exposed_ports "$SERVICE")"
fi
@@ -708,13 +737,7 @@ service_status() {
local ID="$(cat "$SERVICE_ROOT/ID")"
local CONTAINER_STATUS
is_container_status "$ID" "Dead" && echo "dead" && return 0
is_container_status "$ID" "OOMKilled" && echo "oomkilled" && return 0
is_container_status "$ID" "Paused" && echo "paused" && return 0
is_container_status "$ID" "Restarting" && echo "restarting" && return 0
is_container_status "$ID" "Running" && echo "running" && return 0
CONTAINER_STATUS=$(docker inspect -f "{{.State.Status}}" "$CID" 2>/dev/null || true)
CONTAINER_STATUS=$(docker inspect -f "{{.State.Status}}" "$ID" 2>/dev/null || true)
[[ -n "$CONTAINER_STATUS" ]] && echo "$CONTAINER_STATUS" && return 0
echo "missing" && return 0
}

2
config
View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
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_HOST_ROOT=${REDIS_HOST_ROOT:=$REDIS_ROOT}

View File

@@ -80,7 +80,7 @@ service_create_container() {
echo "$ID" >"$SERVICE_ROOT/ID"
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.1 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
service_info "$SERVICE"
@@ -93,7 +93,16 @@ service_export() {
local PASSWORD="$(service_password "$SERVICE")"
[[ -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
status=$?
[[ -n $SSH_TTY ]] && stty opost
@@ -142,13 +151,6 @@ service_start() {
fi
}
service_password() {
local SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
echo "$PASSWORD"
}
service_url() {
local SERVICE="$1"
local PASSWORD="$(service_password "$SERVICE")"

View File

@@ -17,10 +17,10 @@ plugin-install() {
}
pull-docker-image "${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION}"
pull-docker-image "dokku/ambassador:0.2.0"
pull-docker-image "dokku/wait:0.3.0"
pull-docker-image "dokku/s3backup:0.9.4"
pull-docker-image "busybox:1.30.1-uclibc"
pull-docker-image "busybox:1.31.0-uclibc"
pull-docker-image "dokku/ambassador:0.3.1"
pull-docker-image "dokku/s3backup:0.10.1"
pull-docker-image "dokku/wait:0.4.1"
mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory"
chown dokku:dokku "$PLUGIN_DATA_ROOT"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku redis service plugin"
version = "1.8.1"
version = "1.11.1"
[plugin.config]

View File

@@ -45,7 +45,7 @@ service-destroy-cmd() {
service_container_rm "$SERVICE"
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"
dokku_log_info2 "$PLUGIN_SERVICE container deleted: $SERVICE"

24
subcommands/links Executable file
View 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 "$@"

View File

@@ -11,20 +11,20 @@ teardown() {
@test "($PLUGIN_COMMAND_PREFIX:list) with no exposed ports, no linked apps" {
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" {
dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242
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" {
dokku apps:create my_app
dokku "$PLUGIN_COMMAND_PREFIX:link" l my_app
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
}

View File

@@ -1,6 +1,10 @@
#!/usr/bin/env bash
set -eo pipefail
[[ $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
if [[ "$DOKKU_VERSION" == "master" ]]; then
sudo bash bootstrap.sh
@@ -13,9 +17,10 @@ export DOKKU_LIB_ROOT="/var/lib/dokku"
export DOKKU_PLUGINS_ROOT="$DOKKU_LIB_ROOT/plugins/available"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/config"
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 ./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 dokku plugin:enable "$PLUGIN_COMMAND_PREFIX"
sudo dokku plugin:install