Compare commits

..

11 Commits
1.8.1 ... 1.9.0

Author SHA1 Message Date
Jose Diaz-Gonzalez
7adb4a9a04 Release 1.9.0 2019-07-15 15:00:27 -07:00
Jose Diaz-Gonzalez
925fb8597e 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
9b88cde4c0 Merge pull request #112 from dokku/upgrade-version
Upgrade docker image versions
2019-07-15 14:17:56 -07:00
Jose Diaz-Gonzalez
0fca2b6ee0 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
26084da79a fix: use correct variable for checking for password file 2019-07-12 12:56:37 -07:00
Jose Diaz-Gonzalez
6418fa4474 chore: update build targets 2019-07-11 16:35:06 -07:00
Jose Diaz-Gonzalez
c585944582 chore: move to helper functions for fetching passwords 2019-07-11 16:34:35 -07:00
Jose Diaz-Gonzalez
3b9255bf85 chore: reorder images 2019-07-11 14:32:49 -07:00
Jose Diaz-Gonzalez
3c28a9f2a7 feat: update ambassador, s3backup, and wait images 2019-07-11 14:31:47 -07:00
Jose Diaz-Gonzalez
c5a6f4fc37 feat: upgrade busybox to 1.31.0-uclibc 2019-07-11 13:36:41 -07:00
Jose Diaz-Gonzalez
70fb9d8d1d feat: upgrade to 5.7.26 2019-07-11 13:24:12 -07:00
10 changed files with 81 additions and 26 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 mysql [![Build Status](https://img.shields.io/travis/dokku/dokku-mysql.svg?branch=master "Build Status")](https://travis-ci.org/dokku/dokku-mysql) [![IRC Network](https://img.shields.io/badge/irc-freenode-blue.svg "IRC Freenode")](https://webchat.freenode.net/?channels=dokku)
Official mysql plugin for dokku. Currently defaults to installing [mysql 5.7.25](https://hub.docker.com/_/mysql/).
Official mysql plugin for dokku. Currently defaults to installing [mysql 5.7.26](https://hub.docker.com/_/mysql/).
## 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.0
}
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,6 +479,18 @@ 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)
@@ -586,6 +598,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 +689,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

2
config
View File

@@ -1,6 +1,6 @@
#!/usr/bin/env bash
export MYSQL_IMAGE=${MYSQL_IMAGE:="mysql"}
export MYSQL_IMAGE_VERSION=${MYSQL_IMAGE_VERSION:="5.7.25"}
export MYSQL_IMAGE_VERSION=${MYSQL_IMAGE_VERSION:="5.7.26"}
export MYSQL_ROOT=${MYSQL_ROOT:="$DOKKU_LIB_ROOT/services/mysql"}
export MYSQL_HOST_ROOT=${MYSQL_HOST_ROOT:=$MYSQL_ROOT}

View File

@@ -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"
@@ -78,15 +78,15 @@ 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")"
ID=$(docker run --name "$SERVICE_NAME" -v "$SERVICE_HOST_ROOT/data:/var/lib/mysql" -v "$SERVICE_HOST_ROOT/config:/etc/mysql/conf.d" -e "MYSQL_ROOT_PASSWORD=$ROOTPASSWORD" -e MYSQL_USER=mysql -e "MYSQL_PASSWORD=$PASSWORD" -e "MYSQL_DATABASE=$DATABASE_NAME" --env-file="$SERVICE_ROOT/ENV" -d --restart always --label dokku=service --label dokku.service=mysql "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION")
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
dokku_log_info2 "$PLUGIN_SERVICE container created: $SERVICE"
service_info "$SERVICE"
@@ -97,7 +97,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 "printf '[client]\npassword=$PASSWORD\n' > /root/credentials.cnf"
@@ -114,7 +114,7 @@ service_import() {
local SERVICE_NAME="$(get_service_name "$SERVICE")"
local SERVICE_HOST_ROOT="$PLUGIN_DATA_HOST_ROOT/$SERVICE"
local DATABASE_NAME="$(get_database_name "$SERVICE")"
local ROOTPASSWORD="$(cat "$SERVICE_ROOT/ROOTPASSWORD")"
local ROOTPASSWORD="$(service_root_password "$SERVICE")"
if [[ -t 0 ]]; then
dokku_log_fail "No data provided on stdin."
@@ -139,8 +139,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
@@ -155,9 +155,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://mysql:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}/$DATABASE_NAME"
}

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.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"

View File

@@ -1,4 +1,4 @@
[plugin]
description = "dokku mysql service plugin"
version = "1.8.1"
version = "1.9.0"
[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 mysql:5.7.25 running - -"
assert_contains "${lines[*]}" "l mysql:5.7.26 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 mysql:5.7.25 running 3306->4242 -"
assert_contains "${lines[*]}" "l mysql:5.7.26 running 3306->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 mysql:5.7.25 running - my_app"
assert_contains "${lines[*]}" "l mysql:5.7.26 running - my_app"
dokku --force apps:destroy my_app
}