#!/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" }