From c36d9d37b9aa088d5de30664aef94a5d2feb5d20 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 13:16:33 -0700 Subject: [PATCH 1/8] feat: upgrade to 3.6.13 --- README.md | 2 +- config | 2 +- tests/service_list.bats | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 75e87c4..28b6479 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # dokku mongo [![Build Status](https://img.shields.io/travis/dokku/dokku-mongo.svg?branch=master "Build Status")](https://travis-ci.org/dokku/dokku-mongo) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg "IRC Freenode")](https://webchat.freenode.net/?channels=dokku) -Official mongo plugin for dokku. Currently defaults to installing [mongo 3.4.20](https://hub.docker.com/_/mongo/). +Official mongo plugin for dokku. Currently defaults to installing [mongo 3.6.13](https://hub.docker.com/_/mongo/). ## requirements diff --git a/config b/config index 1233c78..ee54a1e 100644 --- a/config +++ b/config @@ -1,6 +1,6 @@ #!/usr/bin/env bash export MONGO_IMAGE=${MONGO_IMAGE:="mongo"} -export MONGO_IMAGE_VERSION=${MONGO_IMAGE_VERSION:="3.4.20"} +export MONGO_IMAGE_VERSION=${MONGO_IMAGE_VERSION:="3.6.13"} export MONGO_ROOT=${MONGO_ROOT:="$DOKKU_LIB_ROOT/services/mongo"} export MONGO_HOST_ROOT=${MONGO_HOST_ROOT:=$MONGO_ROOT} diff --git a/tests/service_list.bats b/tests/service_list.bats index 900fbd4..eaae47e 100755 --- a/tests/service_list.bats +++ b/tests/service_list.bats @@ -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 mongo:3.4.20 running - -" + assert_contains "${lines[*]}" "l mongo:3.6.13 running - -" } @test "($PLUGIN_COMMAND_PREFIX:list) with exposed ports" { dokku "$PLUGIN_COMMAND_PREFIX:expose" l 4242 4243 4244 4245 run dokku "$PLUGIN_COMMAND_PREFIX:list" - assert_contains "${lines[*]}" "l mongo:3.4.20 running 27017->4242 27018->4243 27019->4244 28017->4245 -" + assert_contains "${lines[*]}" "l mongo:3.6.13 running 27017->4242 27018->4243 27019->4244 28017->4245 -" } @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 mongo:3.4.20 running - my_app" + assert_contains "${lines[*]}" "l mongo:3.6.13 running - my_app" dokku --force apps:destroy my_app } From 1ad804adbad49c3b7b723f760eb2e2744c3fc590 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 13:36:40 -0700 Subject: [PATCH 2/8] feat: upgrade busybox to 1.31.0-uclibc --- install | 2 +- subcommands/destroy | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/install b/install index ba5ca99..922b0f8 100755 --- a/install +++ b/install @@ -20,7 +20,7 @@ plugin-install() { 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" mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory" chown dokku:dokku "$PLUGIN_DATA_ROOT" diff --git a/subcommands/destroy b/subcommands/destroy index 57afc65..5b5d776 100755 --- a/subcommands/destroy +++ b/subcommands/destroy @@ -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" From 20deba8771986aa825721a723eb0f666078b62db Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 14:31:47 -0700 Subject: [PATCH 3/8] feat: update ambassador, s3backup, and wait images --- common-functions | 4 ++-- functions | 2 +- install | 6 +++--- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/common-functions b/common-functions index d770be5..d325166 100755 --- a/common-functions +++ b/common-functions @@ -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.0 } service_backup_auth() { @@ -657,7 +657,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.0 >/dev/null if [[ "$LOG_FAIL" == "true" ]]; then dokku_log_info1 "Service $SERVICE exposed on port(s) [container->host]: $(service_exposed_ports "$SERVICE")" fi diff --git a/functions b/functions index 65152dc..3be1387 100755 --- a/functions +++ b/functions @@ -96,7 +96,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.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null echo "db.createUser({user:'admin',pwd:'$ROOTPASSWORD',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'__system',db:'admin'},{role:'root',db:'admin'}]})" | docker exec -i "$SERVICE_NAME" mongo admin >/dev/null echo "db.createUser({user:'$SERVICE',pwd:'$PASSWORD',roles:[{role:'readWrite',db:'$DATABASE_NAME'}]})" | docker exec -i "$SERVICE_NAME" mongo -u admin -p "$ROOTPASSWORD" --authenticationDatabase admin "$DATABASE_NAME" >/dev/null diff --git a/install b/install index 922b0f8..17237b4 100755 --- a/install +++ b/install @@ -17,9 +17,9 @@ 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 "dokku/ambassador:0.3.0" + pull-docker-image "dokku/wait:0.4.0" + pull-docker-image "dokku/s3backup:0.10.0" pull-docker-image "busybox:1.31.0-uclibc" mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory" From c98705f29d482c6003169a5ac5cfb86ff07b11ae Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 14:32:49 -0700 Subject: [PATCH 4/8] chore: reorder images --- install | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/install b/install index 17237b4..8b347f9 100755 --- a/install +++ b/install @@ -17,10 +17,10 @@ plugin-install() { } pull-docker-image "${PLUGIN_IMAGE}:${PLUGIN_IMAGE_VERSION}" - pull-docker-image "dokku/ambassador:0.3.0" - pull-docker-image "dokku/wait:0.4.0" - pull-docker-image "dokku/s3backup:0.10.0" pull-docker-image "busybox:1.31.0-uclibc" + pull-docker-image "dokku/ambassador:0.3.0" + pull-docker-image "dokku/s3backup:0.10.0" + pull-docker-image "dokku/wait:0.4.0" mkdir -p "$PLUGIN_DATA_ROOT" || echo "Failed to create $PLUGIN_SERVICE data directory" chown dokku:dokku "$PLUGIN_DATA_ROOT" From 2b507c6938da6c8d6c5b0343d1354de2a8dda2a8 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 16:34:35 -0700 Subject: [PATCH 5/8] chore: move to helper functions for fetching passwords --- common-functions | 20 ++++++++++++++++++++ functions | 17 ++++++++--------- subcommands/connect-admin | 2 +- 3 files changed, 29 insertions(+), 10 deletions(-) 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 3be1387..4281356 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" @@ -83,8 +83,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")" if [[ -f "$SERVICE_ROOT/MONGO_CONFIG_OPTIONS" ]]; then @@ -109,7 +109,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 "mongodump -d $DATABASE_NAME -u \"$SERVICE\" -p \"$PASSWORD\" --authenticationDatabase \"$DATABASE_NAME\" --quiet --gzip --archive 2>/dev/null" @@ -124,7 +124,7 @@ service_import() { local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_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")" if [[ -t 0 ]]; then dokku_log_fail "No data provided on stdin." @@ -149,8 +149,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 @@ -165,9 +165,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://$SERVICE:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}/$DATABASE_NAME" } diff --git a/subcommands/connect-admin b/subcommands/connect-admin index 6137877..5e12804 100755 --- a/subcommands/connect-admin +++ b/subcommands/connect-admin @@ -18,7 +18,7 @@ service-connect-admin-cmd() { verify_service_name "$SERVICE" SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" SERVICE_NAME="$(get_service_name "$SERVICE")" - PASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")" + PASSWORD="$(service_root_password "$SERVICE")" has_tty && SERVICE_TTY_OPTS="-t" docker exec -i $SERVICE_TTY_OPTS "$SERVICE_NAME" mongo -u admin -p "$PASSWORD" --authenticationDatabase admin "$SERVICE" From 2757aa1fe85c7e46a7a2508e22e0f60df0797052 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Thu, 11 Jul 2019 16:35:06 -0700 Subject: [PATCH 6/8] chore: update build targets --- .travis.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index e263f95..28d2958 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,7 @@ 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 script: make test after_failure: make report From 576ce3006279662c360c033d60f579052314fdc1 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 12 Jul 2019 12:56:37 -0700 Subject: [PATCH 7/8] fix: use correct variable for checking for password file --- common-functions | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common-functions b/common-functions index 08a6c6f..f9ccfe4 100755 --- a/common-functions +++ b/common-functions @@ -591,7 +591,7 @@ service_password() { declare SERVICE="$1" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local PASSWORD_FILE="$SERVICE_ROOT/PASSWORD" - if [[ -f "$PASSWORD" ]]; then + if [[ -f "$PASSWORD_FILE" ]]; then cat "$PASSWORD_FILE" fi } @@ -601,7 +601,7 @@ service_root_password() { declare SERVICE="$1" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local PASSWORD_FILE="$SERVICE_ROOT/ROOTPASSWORD" - if [[ -f "$PASSWORD" ]]; then + if [[ -f "$PASSWORD_FILE" ]]; then cat "$PASSWORD_FILE" fi } From a552d34f6d7de527e5b7ad3ac5531f0e904ae2e9 Mon Sep 17 00:00:00 2001 From: Jose Diaz-Gonzalez Date: Fri, 12 Jul 2019 13:43:57 -0700 Subject: [PATCH 8/8] 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. --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 28d2958..812a515 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,5 +4,6 @@ env: - DOKKU_VERSION=master - 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