82 lines
2.4 KiB
Bash
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"
|
|
}
|