Moved compose check to top.
Improved variable check.
This commit is contained in:
		
							
								
								
									
										144
									
								
								update.sh
									
									
									
									
									
								
							
							
						
						
									
										144
									
								
								update.sh
									
									
									
									
									
								
							| @@ -175,6 +175,51 @@ remove_obsolete_nginx_ports() { | |||||||
|     done         |     done         | ||||||
| } | } | ||||||
|  |  | ||||||
|  | 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 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: You´ll have to update this Compose Version manually! Please see: https://mailcow.github.io/mailcow-dockerized-docs/i_u_m/i_u_m_install/\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 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 | ||||||
|  |     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="docker-compose" | ||||||
|  | fi | ||||||
|  | } | ||||||
|  |  | ||||||
| ############## End Function Section ############## | ############## End Function Section ############## | ||||||
|  |  | ||||||
| # Check permissions | # Check permissions | ||||||
| @@ -217,6 +262,10 @@ PATH=$PATH:/opt/bin | |||||||
|  |  | ||||||
| umask 0022 | umask 0022 | ||||||
|  |  | ||||||
|  | # Unset COMPOSE_COMMAND and DOCKER_COMPOSE_VERSION Variable to be on the newest state. | ||||||
|  | unset COMPOSE_COMMAND | ||||||
|  | unset DOCKER_COMPOSE_VERSION | ||||||
|  |  | ||||||
| for bin in curl docker git awk sha1sum; do | for bin in curl docker git awk sha1sum; do | ||||||
|   if [[ -z $(command -v ${bin}) ]]; then  |   if [[ -z $(command -v ${bin}) ]]; then  | ||||||
|   echo "Cannot find ${bin}, exiting..."  |   echo "Cannot find ${bin}, exiting..."  | ||||||
| @@ -224,49 +273,6 @@ for bin in curl docker git awk sha1sum; do | |||||||
|   fi   |   fi   | ||||||
| done | done | ||||||
|  |  | ||||||
| if ! grep "DOCKER_COMPOSE_VERSION=native" mailcow.conf > /dev/null 2>&1 && ! grep "DOCKER_COMPOSE_VERSION=standalone" mailcow.conf > /dev/null 2>&1; then |  | ||||||
|   if docker compose > /dev/null 2>&1; then |  | ||||||
|       if docker compose version --short | grep "^2." > /dev/null 2>&1; then |  | ||||||
|         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 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 |  | ||||||
|         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: You´ll have to update this Compose Version manually! Please see: https://mailcow.github.io/mailcow-dockerized-docs/i_u_m/i_u_m_install/\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 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 |  | ||||||
|     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 cat mailcow.conf | grep "DOCKER_COMPOSE_VERSION=native" > /dev/null 2>&1; then |  | ||||||
|   COMPOSE_COMMAND="docker compose" |  | ||||||
|  |  | ||||||
| elif cat mailcow.conf | grep "DOCKER_COMPOSE_VERSION=standalone" > /dev/null 2>&1; then |  | ||||||
|   COMPOSE_COMMAND="docker-compose" |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| export LC_ALL=C | export LC_ALL=C | ||||||
| DATE=$(date +%Y-%m-%d_%H_%M_%S) | DATE=$(date +%Y-%m-%d_%H_%M_%S) | ||||||
| BRANCH=$(cd ${SCRIPT_DIR}; git rev-parse --abbrev-ref HEAD) | BRANCH=$(cd ${SCRIPT_DIR}; git rev-parse --abbrev-ref HEAD) | ||||||
| @@ -328,15 +334,7 @@ while (($#)); do | |||||||
|   shift |   shift | ||||||
| done | done | ||||||
|  |  | ||||||
| # Check if Docker Compose is older then v2 before continuing | [[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing! Is mailcow installed?"; exit 1;} | ||||||
| if ! $COMPOSE_COMMAND version --short | grep "^2." > /dev/null 2>&1; then |  | ||||||
|   echo -e "\e[33mYour Docker Compose Version is not up to date!\e[0m" |  | ||||||
|   echo -e "\e[33mmailcow needs Docker Compose > 2.X.X!\e[0m" |  | ||||||
|   echo -e "\e[33mYour current installed Version: $($COMPOSE_COMMAND version --short)\e[0m" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| [[ ! -f mailcow.conf ]] && { echo "mailcow.conf is missing"; exit 1;} |  | ||||||
| chmod 600 mailcow.conf | chmod 600 mailcow.conf | ||||||
| source mailcow.conf | source mailcow.conf | ||||||
| DOTS=${MAILCOW_HOSTNAME//[^.]}; | DOTS=${MAILCOW_HOSTNAME//[^.]}; | ||||||
| @@ -346,11 +344,21 @@ if [ ${#DOTS} -lt 2 ]; then | |||||||
|   exit 1 |   exit 1 | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | detect_docker_compose_command | ||||||
|  |  | ||||||
| if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox grep detected, please install gnu grep, \"apk add --no-cache --upgrade grep\""; exit 1; fi | if grep --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox grep detected, please install gnu grep, \"apk add --no-cache --upgrade grep\""; exit 1; fi | ||||||
| # This will also cover sort | # This will also cover sort | ||||||
| if cp --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox cp detected, please install coreutils, \"apk add --no-cache --upgrade coreutils\""; exit 1; fi | if cp --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox cp detected, please install coreutils, \"apk add --no-cache --upgrade coreutils\""; exit 1; fi | ||||||
| if sed --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox sed detected, please install gnu sed, \"apk add --no-cache --upgrade sed\""; exit 1; fi | if sed --help 2>&1 | head -n 1 | grep -q -i "busybox"; then echo "BusyBox sed detected, please install gnu sed, \"apk add --no-cache --upgrade sed\""; exit 1; fi | ||||||
|  |  | ||||||
|  | # Check if Docker Compose is older then v2 before continuing | ||||||
|  | if ! $COMPOSE_COMMAND version --short | grep "^2." > /dev/null 2>&1; then | ||||||
|  |   echo -e "\e[33mYour Docker Compose Version is not up to date!\e[0m" | ||||||
|  |   echo -e "\e[33mmailcow needs Docker Compose > 2.X.X!\e[0m" | ||||||
|  |   echo -e "\e[33mYour current installed Version: $($COMPOSE_COMMAND version --short)\e[0m" | ||||||
|  |   exit 1 | ||||||
|  | fi | ||||||
|  |  | ||||||
| CONFIG_ARRAY=( | CONFIG_ARRAY=( | ||||||
|   "SKIP_LETS_ENCRYPT" |   "SKIP_LETS_ENCRYPT" | ||||||
|   "SKIP_SOGO" |   "SKIP_SOGO" | ||||||
| @@ -412,7 +420,7 @@ for option in ${CONFIG_ARRAY[@]}; do | |||||||
|       echo "# Switch here between native (compose plugin) and standalone" >> mailcow.conf |       echo "# Switch here between native (compose plugin) and standalone" >> mailcow.conf | ||||||
|       echo "# For more informations take a look at the mailcow docs regarding the configuration options." >> mailcow.conf |       echo "# For more informations take a look at the mailcow docs regarding the configuration options." >> mailcow.conf | ||||||
|       echo "" >> mailcow.conf |       echo "" >> mailcow.conf | ||||||
|       echo "DOCKER_COMPOSE_VERSION=${COMPOSE_VERSION}" >> mailcow.conf |       echo "DOCKER_COMPOSE_VERSION=${DOCKER_COMPOSE_VERSION}" >> mailcow.conf | ||||||
|     fi |     fi | ||||||
|   elif [[ ${option} == "DOVEADM_PORT" ]]; then |   elif [[ ${option} == "DOVEADM_PORT" ]]; then | ||||||
|     if ! grep -q ${option} mailcow.conf; then |     if ! grep -q ${option} mailcow.conf; then | ||||||
| @@ -638,23 +646,16 @@ else | |||||||
|    fi |    fi | ||||||
| fi | fi | ||||||
|  |  | ||||||
| echo -e "\e[32mChecking for newer update script...\e[0m" | # echo -e "\e[32mChecking for newer update script...\e[0m" | ||||||
| SHA1_1=$(sha1sum update.sh) | # SHA1_1=$(sha1sum update.sh) | ||||||
| git fetch origin #${BRANCH} | # git fetch origin #${BRANCH} | ||||||
| git checkout origin/${BRANCH} update.sh | # git checkout origin/${BRANCH} update.sh | ||||||
| SHA1_2=$(sha1sum update.sh) | # SHA1_2=$(sha1sum update.sh) | ||||||
| if [[ ${SHA1_1} != ${SHA1_2} ]]; then | # if [[ ${SHA1_1} != ${SHA1_2} ]]; then | ||||||
|   echo "update.sh changed, please run this script again, exiting." | #   echo "update.sh changed, please run this script again, exiting." | ||||||
|   chmod +x update.sh | #   chmod +x update.sh | ||||||
|   exit 2 | #   exit 2 | ||||||
| fi | # fi | ||||||
|  |  | ||||||
| if [[ -f mailcow.conf ]]; then |  | ||||||
|   source mailcow.conf |  | ||||||
| else |  | ||||||
|   echo -e "\e[31mNo mailcow.conf - is mailcow installed?\e[0m" |  | ||||||
|   exit 1 |  | ||||||
| fi |  | ||||||
|  |  | ||||||
| if [ ! $FORCE ]; then | if [ ! $FORCE ]; then | ||||||
|   read -r -p "Are you sure you want to update mailcow: dockerized? All containers will be stopped. [y/N] " response |   read -r -p "Are you sure you want to update mailcow: dockerized? All containers will be stopped. [y/N] " response | ||||||
| @@ -794,6 +795,9 @@ else | |||||||
|   echo -e "\e[33mCannot determine current git repository version...\e[0m" |   echo -e "\e[33mCannot determine current git repository version...\e[0m" | ||||||
| fi | fi | ||||||
|  |  | ||||||
|  | # Set DOCKER_COMPOSE_VERSION | ||||||
|  | sed -i 's/^DOCKER_COMPOSE_VERSION=$/DOCKER_COMPOSE_VERSION='$DOCKER_COMPOSE_VERSION'/g' mailcow.conf | ||||||
|  |  | ||||||
| if [[ ${SKIP_START} == "y" ]]; then | if [[ ${SKIP_START} == "y" ]]; then | ||||||
|   echo -e "\e[33mNot starting mailcow, please run \"$COMPOSE_COMMAND up -d --remove-orphans\" to start mailcow.\e[0m" |   echo -e "\e[33mNot starting mailcow, please run \"$COMPOSE_COMMAND up -d --remove-orphans\" to start mailcow.\e[0m" | ||||||
| else | else | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user