Compare commits

...

15 Commits

Author SHA1 Message Date
Jose Diaz-Gonzalez
d654334225 Release 1.26.1 2023-01-28 16:34:48 -05:00
Jose Diaz-Gonzalez
409cd36b63 docs: update the ci workflow badge
Refs https://github.com/badges/shields/issues/8671
2023-01-28 16:32:52 -05:00
josegonzalez
5a181a6a4c Merge pull request #271 from dokku/5468-dokku-lib-host-root
feat: respect DOKKU_LIB_HOST_ROOT for mounted data volumes
2022-12-27 00:22:59 -05:00
Jose Diaz-Gonzalez
077aa4dc11 feat: respect DOKKU_LIB_HOST_ROOT for mounted data volumes
This change allows folks to change where dokku mounts data from for all official plugins, removing the need to specify the configuration on a one-off basis.

Refs dokku/dokku#5468
2022-12-26 23:49:28 -05:00
Jose Diaz-Gonzalez
6ebdb98ac8 Release 1.26.0 2022-12-26 19:02:25 -05:00
josegonzalez
b7e092db39 Merge pull request #270 from dokku/pause-stop-rm
Add :pause subcommand and make :stop subcommand actually remove the container
2022-12-26 18:44:39 -05:00
Jose Diaz-Gonzalez
3f338c7985 feat: add :pause subcommand and make :stop subcommand actually remove the container 2022-12-26 18:21:10 -05:00
Jose Diaz-Gonzalez
1cde514fba docs: update readme 2022-12-26 17:27:30 -05:00
Jose Diaz-Gonzalez
d281d63afb Release 1.25.0 2022-10-12 01:28:19 -04:00
Jose Diaz-Gonzalez
535bbd839f Merge pull request #257 from dokku/dependabot/docker/postgres-14.5
chore(deps): bump postgres from 14.4 to 14.5
2022-10-11 21:46:51 -07:00
Jose Diaz-Gonzalez
1c4d20cd18 Merge pull request #262 from dokku/arm-support
Update all related images to add arm/arm64 support
2022-10-11 21:45:48 -07:00
Jose Diaz-Gonzalez
90f6f1db08 feat: update all related images to add arm/arm64 support 2022-10-11 23:59:25 -04:00
dependabot[bot]
f0c5009e1a chore(deps): bump postgres from 14.4 to 14.5
Bumps postgres from 14.4 to 14.5.

---
updated-dependencies:
- dependency-name: postgres
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-12 02:07:29 +00:00
Jose Diaz-Gonzalez
674d10ea4d Release 1.24.0 2022-07-25 01:31:15 -04:00
Jose Diaz-Gonzalez
4e3a77ab0e feat: add method for listing all plugin services
This will allow other plugins to iterate over the services exposed by a plugin and instantiate whatever is necessary for those services.
2022-07-25 01:30:32 -04:00
12 changed files with 104 additions and 21 deletions

View File

@@ -1 +1 @@
FROM postgres:14.4 FROM postgres:14.5

View File

@@ -1,6 +1,6 @@
# dokku postgres [![Build Status](https://img.shields.io/github/workflow/status/dokku/dokku-postgres/CI/master?style=flat-square "Build Status")](https://github.com/dokku/dokku-postgres/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku) # dokku postgres [![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-postgres/ci.yml?branch=master&style=flat-square "Build Status")](https://github.com/dokku/dokku-postgres/actions/workflows/ci.yml?query=branch%3Amaster) [![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku)
Official postgres plugin for dokku. Currently defaults to installing [postgres 14.4](https://hub.docker.com/_/postgres/). Official postgres plugin for dokku. Currently defaults to installing [postgres 14.5](https://hub.docker.com/_/postgres/).
## Requirements ## Requirements
@@ -41,6 +41,7 @@ postgres:linked <service> <app> # check if the postgres servi
postgres:links <service> # list all apps linked to the postgres service postgres:links <service> # list all apps linked to the postgres service
postgres:list # list all postgres services postgres:list # list all postgres services
postgres:logs <service> [-t|--tail] <tail-num-optional> # print the most recent log(s) for this service postgres:logs <service> [-t|--tail] <tail-num-optional> # print the most recent log(s) for this service
postgres:pause <service> # pause a running postgres service
postgres:promote <service> <app> # promote service <service> as DATABASE_URL in <app> postgres:promote <service> <app> # promote service <service> as DATABASE_URL in <app>
postgres:restart <service> # graceful shutdown and restart of the postgres service container postgres:restart <service> # graceful shutdown and restart of the postgres service container
postgres:start <service> # start a previously stopped postgres service postgres:start <service> # start a previously stopped postgres service
@@ -376,12 +377,25 @@ dokku postgres:start lollipop
dokku postgres:stop <service> dokku postgres:stop <service>
``` ```
Stop the service and the running container: Stop the service and removes the running container:
```shell ```shell
dokku postgres:stop lollipop dokku postgres:stop lollipop
``` ```
### pause a running postgres service
```shell
# usage
dokku postgres:pause <service>
```
Pause the running container for the service:
```shell
dokku postgres:pause lollipop
```
### graceful shutdown and restart of the postgres service container ### graceful shutdown and restart of the postgres service container
```shell ```shell

View File

@@ -35,7 +35,7 @@ def header(service):
return " ".join( return " ".join(
[ [
f"# dokku {service}", f"# dokku {service}",
f'[![Build Status](https://img.shields.io/github/workflow/status/dokku/dokku-{service}/CI/master?style=flat-square "Build Status")](https://github.com/dokku/dokku-{service}/actions/workflows/ci.yml?query=branch%3Amaster)', f'[![Build Status](https://img.shields.io/github/actions/workflow/status/dokku/dokku-{service}/ci.yml?branch=master&style=flat-square "Build Status")](https://github.com/dokku/dokku-{service}/actions/workflows/ci.yml?query=branch%3Amaster)',
f'[![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku)', f'[![IRC Network](https://img.shields.io/badge/irc-libera-blue.svg?style=flat-square "IRC Libera")](https://webchat.libera.chat/?channels=dokku)',
] ]
) )
@@ -148,6 +148,7 @@ def usage_lifecycle(service, variable, alias, image, scheme, ports, options, uni
"promote", "promote",
"start", "start",
"stop", "stop",
"pause",
"restart", "restart",
"upgrade", "upgrade",
] ]

View File

@@ -443,7 +443,7 @@ service_container_rm() {
local SERVICE_NAME="$(get_service_name "$SERVICE")" local SERVICE_NAME="$(get_service_name "$SERVICE")"
local ID local ID
service_stop "$SERVICE" service_pause "$SERVICE"
ID=$(docker ps -aq --no-trunc --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true ID=$(docker ps -aq --no-trunc --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
# this may be 'true' in tests... # this may be 'true' in tests...
if [[ -z "$ID" ]] || [[ "$ID" == "true" ]]; then if [[ -z "$ID" ]] || [[ "$ID" == "true" ]]; then
@@ -896,19 +896,19 @@ service_status() {
echo "missing" && return 0 echo "missing" && return 0
} }
service_stop() { service_pause() {
declare desc="stop a running service" declare desc="pause a running service"
declare SERVICE="$1" declare SERVICE="$1"
local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE" local SERVICE_ROOT="$PLUGIN_DATA_ROOT/$SERVICE"
local SERVICE_NAME="$(get_service_name "$SERVICE")" local SERVICE_NAME="$(get_service_name "$SERVICE")"
local ID=$(docker ps -aq --no-trunc --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true local ID=$(docker ps -aq --no-trunc --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
[[ -z $ID ]] && dokku_log_warn "Service is already stopped" && return 0 [[ -z $ID ]] && dokku_log_warn "Service is already paused" && return 0
if [[ -n $ID ]]; then if [[ -n $ID ]]; then
dokku_log_info2_quiet "Stopping container" dokku_log_info2_quiet "Pausing container"
docker stop "$SERVICE_NAME" >/dev/null docker stop "$SERVICE_NAME" >/dev/null
service_port_pause "$SERVICE" service_port_pause "$SERVICE"
dokku_log_verbose_quiet "Container stopped" dokku_log_verbose_quiet "Container paused"
else else
dokku_log_verbose_quiet "No container exists for $SERVICE" dokku_log_verbose_quiet "No container exists for $SERVICE"
fi fi

11
config
View File

@@ -3,7 +3,8 @@ _DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export POSTGRES_IMAGE=${POSTGRES_IMAGE:="$(awk -F '[ :]' '{print $2}' "${_DIR}/Dockerfile")"} export POSTGRES_IMAGE=${POSTGRES_IMAGE:="$(awk -F '[ :]' '{print $2}' "${_DIR}/Dockerfile")"}
export POSTGRES_IMAGE_VERSION=${POSTGRES_IMAGE_VERSION:="$(awk -F '[ :]' '{print $3}' "${_DIR}/Dockerfile")"} export POSTGRES_IMAGE_VERSION=${POSTGRES_IMAGE_VERSION:="$(awk -F '[ :]' '{print $3}' "${_DIR}/Dockerfile")"}
export POSTGRES_ROOT=${POSTGRES_ROOT:="$DOKKU_LIB_ROOT/services/postgres"} export POSTGRES_ROOT=${POSTGRES_ROOT:="$DOKKU_LIB_ROOT/services/postgres"}
export POSTGRES_HOST_ROOT=${POSTGRES_HOST_ROOT:=$POSTGRES_ROOT} export DOKKU_LIB_HOST_ROOT=${DOKKU_LIB_HOST_ROOT:=$DOKKU_LIB_ROOT}
export POSTGRES_HOST_ROOT=${POSTGRES_HOST_ROOT:="$DOKKU_LIB_HOST_ROOT/services/postgres"}
export PLUGIN_UNIMPLEMENTED_SUBCOMMANDS=() export PLUGIN_UNIMPLEMENTED_SUBCOMMANDS=()
export PLUGIN_COMMAND_PREFIX="postgres" export PLUGIN_COMMAND_PREFIX="postgres"
@@ -27,9 +28,9 @@ 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_BUSYBOX_IMAGE="busybox:1.34.1-uclibc"
export PLUGIN_AMBASSADOR_IMAGE="dokku/ambassador:0.3.3" export PLUGIN_AMBASSADOR_IMAGE="dokku/ambassador:0.5.0"
export PLUGIN_S3BACKUP_IMAGE="dokku/s3backup:0.10.3" export PLUGIN_S3BACKUP_IMAGE="dokku/s3backup:0.14.0"
export PLUGIN_WAIT_IMAGE="dokku/wait:0.4.3" export PLUGIN_WAIT_IMAGE="dokku/wait:0.6.0"
export POSTGRES_CONFIG_OPTIONS=${POSTGRES_CONFIG_OPTIONS:=""} export POSTGRES_CONFIG_OPTIONS=${POSTGRES_CONFIG_OPTIONS:=""}

View File

@@ -97,7 +97,7 @@ service_create_container() {
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'
dokku_log_verbose_quiet "Securing connection to database" dokku_log_verbose_quiet "Securing connection to database"
service_stop "$SERVICE" >/dev/null service_pause "$SERVICE" >/dev/null
docker run --rm -i -v "$SERVICE_HOST_ROOT/data:/var/lib/postgresql/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -s <"$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/enable_ssl.sh" &>/dev/null docker run --rm -i -v "$SERVICE_HOST_ROOT/data:/var/lib/postgresql/data" "$PLUGIN_IMAGE:$PLUGIN_IMAGE_VERSION" bash -s <"$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/scripts/enable_ssl.sh" &>/dev/null
PREVIOUS_ID=$(docker ps -aq --no-trunc --filter "status=exited" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true PREVIOUS_ID=$(docker ps -aq --no-trunc --filter "status=exited" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true

View File

@@ -1,4 +1,4 @@
[plugin] [plugin]
description = "dokku postgres service plugin" description = "dokku postgres service plugin"
version = "1.23.0" version = "1.26.1"
[plugin.config] [plugin.config]

20
service-list Executable file
View File

@@ -0,0 +1,20 @@
#!/usr/bin/env bash
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/config"
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/common-functions"
set -eo pipefail
[[ $DOKKU_TRACE ]] && set -x
plugin-service-list() {
declare desc="allows listing all services for use by other dokku plugins"
declare SERVICE_TYPE="$1"
if [[ -n "$SERVICE_TYPE" ]] && [[ "$SERVICE_TYPE" != "$PLUGIN_COMMAND_PREFIX" ]]; then
return
fi
for service in $(fn-services-list false); do
echo "$PLUGIN_COMMAND_PREFIX:$service"
done
}
plugin-service-list "$@"

22
subcommands/pause Executable file
View File

@@ -0,0 +1,22 @@
#!/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-pause-cmd() {
#E pause the running container for the service
#E dokku $PLUGIN_COMMAND_PREFIX:pause lollipop
#A service, service to run command against
declare desc="pause a running $PLUGIN_SERVICE service"
local cmd="$PLUGIN_COMMAND_PREFIX:pause" argv=("$@")
[[ ${argv[0]} == "$cmd" ]] && shift 1
declare SERVICE="$1"
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE"
service_pause "$SERVICE"
}
service-pause-cmd "$@"

View File

@@ -16,7 +16,7 @@ service-restart-cmd() {
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service" [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE" verify_service_name "$SERVICE"
service_stop "$SERVICE" service_pause "$SERVICE"
service_start "$SERVICE" service_start "$SERVICE"
dokku_log_info1 "Please call dokku ps:restart on all linked apps" dokku_log_info1 "Please call dokku ps:restart on all linked apps"
} }

View File

@@ -6,7 +6,7 @@ source "$PLUGIN_BASE_PATH/common/functions"
source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions" source "$(dirname "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)")/functions"
service-stop-cmd() { service-stop-cmd() {
#E stop the service and the running container #E stop the service and removes the running container
#E dokku $PLUGIN_COMMAND_PREFIX:stop lollipop #E dokku $PLUGIN_COMMAND_PREFIX:stop lollipop
#A service, service to run command against #A service, service to run command against
declare desc="stop a running $PLUGIN_SERVICE service" declare desc="stop a running $PLUGIN_SERVICE service"
@@ -16,7 +16,7 @@ service-stop-cmd() {
[[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service" [[ -z "$SERVICE" ]] && dokku_log_fail "Please specify a valid name for the service"
verify_service_name "$SERVICE" verify_service_name "$SERVICE"
service_stop "$SERVICE" service_container_rm "$SERVICE"
} }
service-stop-cmd "$@" service-stop-cmd "$@"

25
tests/service_pause.bats Executable file
View File

@@ -0,0 +1,25 @@
#!/usr/bin/env bats
load test_helper
setup() {
dokku "$PLUGIN_COMMAND_PREFIX:create" l
}
teardown() {
dokku --force "$PLUGIN_COMMAND_PREFIX:destroy" l
}
@test "($PLUGIN_COMMAND_PREFIX:pause) error when there are no arguments" {
run dokku "$PLUGIN_COMMAND_PREFIX:pause"
assert_contains "${lines[*]}" "Please specify a valid name for the service"
}
@test "($PLUGIN_COMMAND_PREFIX:pause) error when service does not exist" {
run dokku "$PLUGIN_COMMAND_PREFIX:pause" not_existing_service
assert_contains "${lines[*]}" "service not_existing_service does not exist"
}
@test "($PLUGIN_COMMAND_PREFIX:pause) success" {
run dokku "$PLUGIN_COMMAND_PREFIX:pause" l
assert_success
}