120 lines
2.7 KiB
Bash
120 lines
2.7 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 "${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
|
|
}
|