Add mailcow.sh script for easier starting and stopping of mailcow
This prevents extreme long docker-compose commands
This commit is contained in:
parent
d10ec02869
commit
580e939065
|
@ -288,6 +288,12 @@ COMPOSE_PROJECT_NAME=mailcowdockerized
|
||||||
|
|
||||||
DOCKER_COMPOSE_VERSION=${COMPOSE_VERSION}
|
DOCKER_COMPOSE_VERSION=${COMPOSE_VERSION}
|
||||||
|
|
||||||
|
# Additional override files (relative to the repo root) that need to be taken care of when running mailcow scripts.
|
||||||
|
# Comma separated list without spaces!
|
||||||
|
# Example: DOCKER_COMPOSE_EXTRA_OVERRIDES=helper-scripts/docker-compose.override.yml.d/CONTAINER_ENGINE_PODMAN/docker-compose.override.yml,helper-scripts/docker-compose.override.yml.d/CUSTOM_STORAGE_LOCATION/docker-compose.override.yml
|
||||||
|
|
||||||
|
DOCKER_COMPOSE_EXTRA_OVERRIDES=
|
||||||
|
|
||||||
# The name of the docker-compose binary to use. This option can be used in case both
|
# The name of the docker-compose binary to use. This option can be used in case both
|
||||||
# docker-compose v1 and docker-compose v2 need to be installed.
|
# docker-compose v1 and docker-compose v2 need to be installed.
|
||||||
# Default: docker-compose
|
# Default: docker-compose
|
||||||
|
|
|
@ -0,0 +1,89 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
#
|
||||||
|
# docker-compose wrapper script for mailcow
|
||||||
|
|
||||||
|
#---------------------------------------
|
||||||
|
# functions
|
||||||
|
#---------------------------------------
|
||||||
|
function validate_input()
|
||||||
|
{
|
||||||
|
if [[ "$#" -eq 0 ]]; then
|
||||||
|
echo -e "\e[31mNo arguments given. Call this script with e.g. 'up -d' or 'down'\e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ ! -f mailcow.conf ]]; then
|
||||||
|
echo -e "\e[31mmailcow.conf is missing! Is mailcow installed?\e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
source mailcow.conf
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_docker_compose_command(){
|
||||||
|
if ! [[ "${DOCKER_COMPOSE_VERSION}" == "native" ]] && ! [[ "${DOCKER_COMPOSE_VERSION}" == "standalone" ]]; then
|
||||||
|
if docker compose > /dev/null 2>&1; then
|
||||||
|
if docker compose version --short | grep "2." > /dev/null 2>&1; then
|
||||||
|
DOCKER_COMPOSE_VERSION=native
|
||||||
|
COMPOSE_COMMAND="docker compose"
|
||||||
|
echo -e "\e[31mFound Docker Compose Plugin (native).\e[0m"
|
||||||
|
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to native\e[0m"
|
||||||
|
sleep 2
|
||||||
|
echo -e "\e[33mNotice: You'll have to update this Compose Version via your Package Manager manually! \e[0m"
|
||||||
|
else
|
||||||
|
echo -e "\e[31mCannot find Docker Compose with a Version Higher than 2.X.X.\e[0m"
|
||||||
|
echo -e "\e[31mPlease update/install it manually regarding to this doc site: https://mailcow.github.io/mailcow-dockerized-docs/i_u_m/i_u_m_install/\e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
elif docker-compose > /dev/null 2>&1; then
|
||||||
|
if ! [[ $(alias docker-compose 2> /dev/null) ]] ; then
|
||||||
|
if docker-compose version --short | grep "^2." > /dev/null 2>&1; then
|
||||||
|
DOCKER_COMPOSE_VERSION=standalone
|
||||||
|
COMPOSE_COMMAND="docker-compose"
|
||||||
|
echo -e "\e[31mFound Docker Compose Standalone.\e[0m"
|
||||||
|
echo -e "\e[31mSetting the DOCKER_COMPOSE_VERSION Variable to standalone\e[0m"
|
||||||
|
sleep 2
|
||||||
|
echo -e "\e[33mNotice: For an automatic update of docker-compose please use the update_compose.sh scripts located at the helper-scripts folder.\e[0m"
|
||||||
|
else
|
||||||
|
echo -e "\e[31mCannot find Docker Compose with a Version Higher than 2.X.X.\e[0m"
|
||||||
|
echo -e "\e[31mPlease update/install regarding to this doc site: https://mailcow.github.io/mailcow-dockerized-docs/i_u_m/i_u_m_install/\e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
else
|
||||||
|
echo -e "\e[31mCannot find Docker Compose.\e[0m"
|
||||||
|
echo -e "\e[31mPlease install it regarding to this doc site: https://mailcow.github.io/mailcow-dockerized-docs/i_u_m/i_u_m_install/\e[0m"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
elif [[ "${DOCKER_COMPOSE_VERSION}" == "native" ]]; then
|
||||||
|
COMPOSE_COMMAND="docker compose"
|
||||||
|
|
||||||
|
elif [[ "${DOCKER_COMPOSE_VERSION}" == "standalone" ]]; then
|
||||||
|
COMPOSE_COMMAND="${MAILCOW_DOCKER_COMPOSE:-"docker-compose"}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function run_compose()
|
||||||
|
{
|
||||||
|
if [[ -n "${DOCKER_COMPOSE_EXTRA_OVERRIDES}" ]]; then
|
||||||
|
IFS=',' read -r -a overrides <<< "${DOCKER_COMPOSE_EXTRA_OVERRIDES}"
|
||||||
|
COMPOSE_ARGUMENTS="-f docker-compose.yml "
|
||||||
|
for override in "${overrides[@]}"; do
|
||||||
|
COMPOSE_ARGUMENTS+="-f ${override} "
|
||||||
|
done
|
||||||
|
else
|
||||||
|
COMPOSE_ARGUMENTS=""
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo -e "\e[32mExecuting: ${COMPOSE_COMMAND} ${COMPOSE_ARGUMENTS} $@ \e[0m"
|
||||||
|
${COMPOSE_COMMAND} ${COMPOSE_ARGUMENTS} $@
|
||||||
|
}
|
||||||
|
|
||||||
|
#---------------------------------------
|
||||||
|
# main
|
||||||
|
#---------------------------------------
|
||||||
|
validate_input $@
|
||||||
|
detect_docker_compose_command
|
||||||
|
run_compose $@
|
Loading…
Reference in New Issue