Docker-development/common.shinc

120 lines
2.8 KiB
Bash

#!/usr/bin/env bash
REQUIRED_VARIABLES=(SERVICE_NAME SCRIPT_PATH IMAGE_NAME IMAGE_VERSION)
for _var in ${REQUIRED_VARIABLES[@]}; do
if [ -z ${!_var+x} ]; then
echo "Missing definition of variable: ${_var}"
exit 2
fi
done
source ${SCRIPT_PATH}/../settings.shinc
source ${SCRIPT_PATH}/../env.shinc 2> /dev/null
source ${SCRIPT_PATH}/../functions.shinc
#
# Commonly used functions
#
stop() {
__msg "Stopping container... " 0 no
STATUS=$(docker stop ${SERVICE_NAME} > /dev/null 2>&1)
if [[ $? -ne 0 ]]; then
__err "${STATUS}"
return 1
else
__success "[ok]"
fi
return 0
}
start() {
__msg "Starting container... " 0 no
docker inspect --type container "${SERVICE_NAME}" > /dev/null 2>&1
if [[ $? -ne 0 ]]; then
init
CURRENT_STATUS=$(docker inspect --format "{{.State.Running}}" "${SERVICE_NAME}")
if [[ "${CURRENT_STATUS}" == "true" ]]; then
return 0
fi
fi
STATUS=$(docker start ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then
__err "${STATUS}"
return 1
else
__success "[ok]"
fi
return 0
}
remove() {
stop
__msg "Removing container... " 0 no
STATUS=$(docker rm ${SERVICE_NAME} 2>&1)
if [[ $? -ne 0 ]]; then
__err "${STATUS}"
return 1
else
__success "[ok]"
fi
return 0
}
logs() {
docker logs "$@" ${SERVICE_NAME}
return $?
}
exec() {
# Test if bash is available
docker exec -it ${SERVICE_NAME} /bin/bash -c "echo 'test'" > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
docker exec -it ${SERVICE_NAME} /bin/bash
return $?
fi
# Test if bash is available
docker exec -it ${SERVICE_NAME} /bin/sh -c "echo 'test'" > /dev/null 2>&1
if [[ $? -eq 0 ]]; then
docker exec -it ${SERVICE_NAME} /bin/sh
return $?
fi
__err "Could not find either sh or bash in the container"
return 1
}
help() {
echo "┌──────────────────────────────────────────────────────────────┐"
echo "│ Available commands │"
echo "└──────────────────────────────────────────────────────────────┘"
echo -e -n "$LOG"
echo " > init - Initializes the environment"
echo " > start - Start containers"
echo " > stop - Stops containers"
echo " > remove - Removes traces of the container"
echo " > logs - Shows logs"
echo " > exec - Enters the containers tty"
echo " > help - Display this help"
echo -e -n "${NORMAL}"
echo "└──────────────────────────────────────────────────────────────┘"
return 0
}