82 lines
2.4 KiB
Bash

#!/bin/bash
prepare_container() {
SERVICE_NAME=$1
SERVICE_DISPLAY=$2
echo "Preparing the $SERVICE_DISPLAY service or Docker container ..."
echo "Checking to see if $SERVICE_DISPLAY service exists ..."
export CONTAINER_ID=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" ps -q $SERVICE_NAME`
unset CONTAINER_CREATED
unset CONTAINER_STARTED
if [[ -z $CONTAINER_ID ]]; then
create_container $*
else
check_container $*
fi
}
create_container() {
SERVICE_NAME=$1
SERVICE_DISPLAY=$2
export CONTAINER_CREATED=1
echo "$SERVICE_DISPLAY service does not exist; creating and starting it ..."
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" up --detach --no-deps $SERVICE_NAME
echo "Getting new $SERVICE_DISPLAY service container ID ..."
export CONTAINER_ID=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" ps -q $SERVICE_NAME`
echo "Found $SERVICE_DISPLAY Docker container: $CONTAINER_ID"
}
check_container() {
SERVICE_NAME=$1
SERVICE_DISPLAY=$2
echo "Found $SERVICE_DISPLAY Docker container: $CONTAINER_ID"
echo "Checking to see if $SERVICE_DISPLAY service is running ..."
CONTAINER_TOP=`docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" top $SERVICE_NAME`
if [[ -z $CONTAINER_TOP ]]; then
start_container $*
else
echo "$SERVICE_DISPLAY service is running; will perform while running ..."
fi
}
start_container() {
SERVICE_NAME=$1
SERVICE_DISPLAY=$2
export CONTAINER_STARTED=1
echo "$SERVICE_DISPLAY service is not running; starting it ..."
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" start $SERVICE_NAME
}
unwind_container() {
SERVICE_NAME=$1
SERVICE_DISPLAY=$2
CONTAINER_CREATED=$3
CONTAINER_STARTED=$4
echo "Unwinding the $SERVICE_DISPLAY service or Docker container ..."
if [[ $CONTAINER_CREATED ]]; then
echo "$SERVICE_DISPLAY service did not exist; stopping and destorying it ..."
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" rm --stop --force $SERVICE_NAME
elif [[ $CONTAINER_STARTED ]]; then
echo "$SERVICE_DISPLAY service was not running; stopping it ..."
docker-compose --project-directory "${DOCKER_COMPOSE_DIR}" stop $SERVICE_NAME
fi
}
wait_container_postgres() {
CONTAINER_ID=$1
echo "Waiting for PostgreSQL database to become available ..."
docker container exec $CONTAINER_ID sh -c "until [ -f /var/run/postgresql/.s.PGSQL.5432.lock ]; do sleep 1; done"
}