Compare commits
11 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4819e34bd5 | ||
|
|
c7f511c5f2 | ||
|
|
fcbf0ef22c | ||
|
|
2a6a5d99e1 | ||
|
|
7d4cf380bb | ||
|
|
fb522d1bd8 | ||
|
|
5b13bedbd6 | ||
|
|
f65790c5d6 | ||
|
|
93dd4fecbb | ||
|
|
0317711a5b | ||
|
|
4867906243 |
@@ -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
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# dokku postgres [](https://travis-ci.org/dokku/dokku-postgres) [](https://webchat.freenode.net/?channels=dokku)
|
||||
|
||||
Official postgres plugin for dokku. Currently defaults to installing [postgres 11.2](https://hub.docker.com/_/postgres/).
|
||||
Official postgres plugin for dokku. Currently defaults to installing [postgres 11.4](https://hub.docker.com/_/postgres/).
|
||||
|
||||
## requirements
|
||||
|
||||
@@ -60,7 +60,7 @@ dokku postgres:create lolipop
|
||||
# it *must* be compatible with the
|
||||
# official postgres image
|
||||
export POSTGRES_IMAGE="postgres"
|
||||
export POSTGRES_IMAGE_VERSION="11.2"
|
||||
export POSTGRES_IMAGE_VERSION="11.4"
|
||||
dokku postgres:create lolipop
|
||||
|
||||
# you can also specify custom environment
|
||||
|
||||
@@ -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
2
config
@@ -1,6 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
export POSTGRES_IMAGE=${POSTGRES_IMAGE:="postgres"}
|
||||
export POSTGRES_IMAGE_VERSION=${POSTGRES_IMAGE_VERSION:="11.2"}
|
||||
export POSTGRES_IMAGE_VERSION=${POSTGRES_IMAGE_VERSION:="11.4"}
|
||||
export POSTGRES_ROOT=${POSTGRES_ROOT:="$DOKKU_LIB_ROOT/services/postgres"}
|
||||
export POSTGRES_HOST_ROOT=${POSTGRES_HOST_ROOT:=$POSTGRES_ROOT}
|
||||
|
||||
|
||||
13
functions
13
functions
@@ -68,7 +68,7 @@ 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 PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
|
||||
local PASSWORD="$(service_password "$SERVICE")"
|
||||
local DATABASE_NAME="$(get_database_name "$SERVICE")"
|
||||
local PREVIOUS_ID
|
||||
|
||||
@@ -76,7 +76,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
|
||||
|
||||
dokku_log_verbose_quiet "Creating container database"
|
||||
docker exec "$SERVICE_NAME" su - postgres -c "createdb -E utf8 $DATABASE_NAME" 2>/dev/null || dokku_log_verbose_quiet 'Already exists'
|
||||
@@ -98,7 +98,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" env PGPASSWORD="$PASSWORD" pg_dump -Fc --no-acl --no-owner -h localhost -U postgres -w "$DATABASE_NAME"
|
||||
@@ -113,7 +113,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."
|
||||
@@ -138,7 +138,7 @@ 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 PASSWORD="$(cat "$SERVICE_ROOT/PASSWORD")"
|
||||
local PASSWORD="$(service_password "$SERVICE")"
|
||||
|
||||
if [[ -n $PREVIOUS_ID ]]; then
|
||||
docker start "$PREVIOUS_ID" >/dev/null
|
||||
@@ -153,9 +153,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://postgres:$PASSWORD@$SERVICE_DNS_HOSTNAME:${PLUGIN_DATASTORE_PORTS[0]}/$DATABASE_NAME"
|
||||
}
|
||||
|
||||
8
install
8
install
@@ -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"
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[plugin]
|
||||
description = "dokku postgres service plugin"
|
||||
version = "1.8.1"
|
||||
version = "1.9.0"
|
||||
[plugin.config]
|
||||
|
||||
@@ -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
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" {
|
||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||
assert_contains "${lines[*]}" "l postgres:11.2 running - -"
|
||||
assert_contains "${lines[*]}" "l postgres:11.4 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 postgres:11.2 running 5432->4242 -"
|
||||
assert_contains "${lines[*]}" "l postgres:11.4 running 5432->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 postgres:11.2 running - my_app"
|
||||
assert_contains "${lines[*]}" "l postgres:11.4 running - my_app"
|
||||
dokku --force apps:destroy my_app
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user