Compare commits
22 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5ce14c0221 | ||
|
|
3b86072e76 | ||
|
|
dccd7e7f89 | ||
|
|
856e0eec4b | ||
|
|
e5862de232 | ||
|
|
91415946b7 | ||
|
|
d8c2656a32 | ||
|
|
ad0e0f69f4 | ||
|
|
f93699221b | ||
|
|
feb832109c | ||
|
|
89f080cb51 | ||
|
|
91bf720861 | ||
|
|
ea74d1da3e | ||
|
|
4dc758d7e6 | ||
|
|
b87837b2f1 | ||
|
|
1a0eca9f9a | ||
|
|
7f4c06d6c0 | ||
|
|
355952eb1f | ||
|
|
a5fbfe1e7a | ||
|
|
cec13103ba | ||
|
|
da72857cad | ||
|
|
8cec429b0e |
@@ -1,8 +1,8 @@
|
|||||||
dist: trusty
|
dist: bionic
|
||||||
language: bash
|
language: bash
|
||||||
env:
|
env:
|
||||||
- DOKKU_VERSION=master
|
- DOKKU_VERSION=master
|
||||||
- DOKKU_VERSION=v0.17.0
|
- DOKKU_VERSION=v0.19.0
|
||||||
install: make setup
|
install: make setup
|
||||||
before_script: sudo sysctl -w vm.max_map_count=262144
|
before_script: sudo sysctl -w vm.max_map_count=262144
|
||||||
script: make test
|
script: make test
|
||||||
|
|||||||
19
README.md
19
README.md
@@ -279,3 +279,22 @@ or root.
|
|||||||
If you wish to disable the `docker pull` calls that the plugin triggers, you may set the `POSTGRES_DISABLE_PULL` environment variable to `true`. Once disabled, you will need to pull the service image you wish to deploy as shown in the `stderr` output.
|
If you wish to disable the `docker pull` calls that the plugin triggers, you may set the `POSTGRES_DISABLE_PULL` environment variable to `true`. Once disabled, you will need to pull the service image you wish to deploy as shown in the `stderr` output.
|
||||||
|
|
||||||
Please ensure the proper images are in place when `docker pull` is disabled.
|
Please ensure the proper images are in place when `docker pull` is disabled.
|
||||||
|
|
||||||
|
## Postgis
|
||||||
|
|
||||||
|
Official Postgres docker images doesn't include postgis extension. To be able to use postgis, you will need postgres+postgis docker container compatible with official ones.
|
||||||
|
|
||||||
|
You can use for example `postgis/postgis` container:
|
||||||
|
|
||||||
|
```
|
||||||
|
export POSTGRES_IMAGE="postgis/postgis"
|
||||||
|
export POSTGRES_IMAGE_VERSION="latest"
|
||||||
|
|
||||||
|
dokku postgres:create postgis-database
|
||||||
|
|
||||||
|
dokku postgres:connect postgis-database
|
||||||
|
|
||||||
|
CREATE EXTENSION postgis;
|
||||||
|
```
|
||||||
|
|
||||||
|
Reference issue: https://github.com/dokku/dokku-postgres/issues/52
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
|
||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $DOKKU_TRACE ]] && set -x
|
[[ $DOKKU_TRACE ]] && set -x
|
||||||
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
source "$PLUGIN_AVAILABLE_PATH/config/functions"
|
||||||
@@ -217,7 +218,7 @@ service_backup() {
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# shellcheck disable=SC2086
|
# shellcheck disable=SC2086
|
||||||
docker run --rm $BACKUP_PARAMETERS dokku/s3backup:0.10.0
|
docker run --rm $BACKUP_PARAMETERS "$PLUGIN_S3BACKUP_IMAGE"
|
||||||
}
|
}
|
||||||
|
|
||||||
service_backup_auth() {
|
service_backup_auth() {
|
||||||
@@ -394,7 +395,7 @@ service_info() {
|
|||||||
"--version: $(service_version "$SERVICE")"
|
"--version: $(service_version "$SERVICE")"
|
||||||
)
|
)
|
||||||
if [[ -z "$INFO_FLAG" ]]; then
|
if [[ -z "$INFO_FLAG" ]]; then
|
||||||
dokku_log_info2 "Container Information"
|
dokku_log_info2 "$SERVICE $PLUGIN_COMMAND_PREFIX service information"
|
||||||
for flag in "${flag_map[@]}"; do
|
for flag in "${flag_map[@]}"; do
|
||||||
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
|
key="$(echo "${flag#--}" | cut -f1 -d' ' | tr - ' ')"
|
||||||
dokku_log_verbose "$(printf "%-20s %-25s" "${key^}" "${flag#*: }")"
|
dokku_log_verbose "$(printf "%-20s %-25s" "${key^}" "${flag#*: }")"
|
||||||
@@ -494,19 +495,16 @@ service_links() {
|
|||||||
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)
|
||||||
|
|
||||||
if [[ -z $SERVICES ]]; then
|
if [[ -z $SERVICES ]]; then
|
||||||
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
dokku_log_warn "There are no $PLUGIN_SERVICE services"
|
||||||
else
|
return
|
||||||
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,
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
dokku_log_info2_quiet "$PLUGIN_SERVICE services"
|
||||||
|
for SERVICE in $SERVICES; do
|
||||||
|
echo "$SERVICE"
|
||||||
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
service_logs() {
|
service_logs() {
|
||||||
@@ -689,7 +687,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.3.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" "$PLUGIN_AMBASSADOR_IMAGE" >/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
|
||||||
@@ -740,13 +738,7 @@ service_status() {
|
|||||||
local ID="$(cat "$SERVICE_ROOT/ID")"
|
local ID="$(cat "$SERVICE_ROOT/ID")"
|
||||||
local CONTAINER_STATUS
|
local CONTAINER_STATUS
|
||||||
|
|
||||||
is_container_status "$ID" "Dead" && echo "dead" && return 0
|
CONTAINER_STATUS=$(docker inspect -f "{{.State.Status}}" "$ID" 2>/dev/null || true)
|
||||||
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)
|
|
||||||
[[ -n "$CONTAINER_STATUS" ]] && echo "$CONTAINER_STATUS" && return 0
|
[[ -n "$CONTAINER_STATUS" ]] && echo "$CONTAINER_STATUS" && return 0
|
||||||
echo "missing" && return 0
|
echo "missing" && return 0
|
||||||
}
|
}
|
||||||
|
|||||||
5
config
5
config
@@ -24,3 +24,8 @@ export PLUGIN_BASE_PATH="$PLUGIN_PATH"
|
|||||||
if [[ -n $DOKKU_API_VERSION ]]; then
|
if [[ -n $DOKKU_API_VERSION ]]; then
|
||||||
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
|
export PLUGIN_BASE_PATH="$PLUGIN_ENABLED_PATH"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export PLUGIN_BUSYBOX_IMAGE="busybox:1.31.1-uclibc"
|
||||||
|
export PLUGIN_AMBASSADOR_IMAGE="dokku/ambassador:0.3.3"
|
||||||
|
export PLUGIN_S3BACKUP_IMAGE="dokku/s3backup:0.10.3"
|
||||||
|
export PLUGIN_WAIT_IMAGE="dokku/wait:0.4.3"
|
||||||
|
|||||||
@@ -76,7 +76,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.4.0 -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
|
docker run --rm --link "$SERVICE_NAME:$PLUGIN_COMMAND_PREFIX" "$PLUGIN_WAIT_IMAGE" -p "$PLUGIN_DATASTORE_WAIT_PORT" >/dev/null
|
||||||
|
|
||||||
dokku_log_verbose_quiet "Creating container database"
|
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'
|
docker exec "$SERVICE_NAME" su - postgres -c "createdb -E utf8 $DATABASE_NAME" 2>/dev/null || dokku_log_verbose_quiet 'Already exists'
|
||||||
|
|||||||
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 "busybox:1.31.0-uclibc"
|
pull-docker-image "$PLUGIN_BUSYBOX_IMAGE"
|
||||||
pull-docker-image "dokku/ambassador:0.3.0"
|
pull-docker-image "$PLUGIN_AMBASSADOR_IMAGE"
|
||||||
pull-docker-image "dokku/s3backup:0.10.0"
|
pull-docker-image "$PLUGIN_S3BACKUP_IMAGE"
|
||||||
pull-docker-image "dokku/wait:0.4.0"
|
pull-docker-image "$PLUGIN_WAIT_IMAGE"
|
||||||
|
|
||||||
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 postgres service plugin"
|
description = "dokku postgres service plugin"
|
||||||
version = "1.9.2"
|
version = "1.11.0"
|
||||||
[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.31.0-uclibc chmod 777 -R /config /data
|
docker run --rm -v "$SERVICE_HOST_ROOT/data:/data" -v "$SERVICE_HOST_ROOT/config:/config" "$PLUGIN_BUSYBOX_IMAGE" 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"
|
||||||
|
|||||||
@@ -10,27 +10,13 @@ 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 --quiet "$PLUGIN_COMMAND_PREFIX:list"
|
||||||
assert_contains "${lines[*]}" "l postgres:11.6 running - -"
|
assert_output "l"
|
||||||
}
|
|
||||||
|
|
||||||
@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.6 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.6 running - my_app"
|
|
||||||
dokku --force apps:destroy my_app
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@test "($PLUGIN_COMMAND_PREFIX:list) when there are no services" {
|
@test "($PLUGIN_COMMAND_PREFIX:list) when there are no services" {
|
||||||
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
|
||||||
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
run dokku "$PLUGIN_COMMAND_PREFIX:list"
|
||||||
assert_contains "${lines[*]}" "There are no Postgres services"
|
assert_output "${lines[*]}" "There are no $PLUGIN_SERVICE services"
|
||||||
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
dokku "$PLUGIN_COMMAND_PREFIX:create" l
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,9 +2,10 @@
|
|||||||
set -eo pipefail
|
set -eo pipefail
|
||||||
[[ $TRACE ]] && set -x
|
[[ $TRACE ]] && set -x
|
||||||
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 762E3157
|
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
|
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 -
|
curl -fsSL https://nginx.org/keys/nginx_signing.key | sudo apt-key add -
|
||||||
|
|
||||||
|
echo "dokku dokku/skip_key_file boolean true" | sudo debconf-set-selections
|
||||||
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
|
||||||
|
|||||||
Reference in New Issue
Block a user