fix: correct handling of container retrieval

In the previous method, if the container was renamed or there were multiple names attached to the container, fetching the container ID would fail as the regex would only match at the end. Instead of using grep, use the docker 'filter' functionality to fetch the container ID as appropriate.
This commit is contained in:
Jose Diaz-Gonzalez
2019-03-25 12:37:36 -04:00
parent 9eb26d8601
commit 5a541fc340

View File

@@ -81,7 +81,7 @@ service_create_container() {
service_stop "$SERVICE" > /dev/null service_stop "$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 -f status=exited --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true PREVIOUS_ID=$(docker ps -aq --no-trunc --filter "status=exited" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
docker start "$PREVIOUS_ID" > /dev/null docker start "$PREVIOUS_ID" > /dev/null
service_port_unpause "$SERVICE" service_port_unpause "$SERVICE"
@@ -122,14 +122,14 @@ service_start() {
local QUIET="$2" local QUIET="$2"
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 -f status=running --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true local ID=$(docker ps -aq --no-trunc --filter "status=running" --filter "name=^/$SERVICE_NAME$" --format '{{ .ID }}') || true
if [[ -n $ID ]]; then if [[ -n $ID ]]; then
[[ -z $QUIET ]] && dokku_log_warn "Service is already started" [[ -z $QUIET ]] && dokku_log_warn "Service is already started"
return 0 return 0
fi fi
dokku_log_info2_quiet "Starting container" dokku_log_info2_quiet "Starting container"
local PREVIOUS_ID=$(docker ps -f status=exited --no-trunc | grep -e "$SERVICE_NAME$" | awk '{print $1}') || true 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="$(cat "$SERVICE_ROOT/PASSWORD")"
if [[ -n $PREVIOUS_ID ]]; then if [[ -n $PREVIOUS_ID ]]; then