update_compose.sh 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. #!/bin/bash
  2. SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
  3. source ${SCRIPT_DIR}/../mailcow.conf
  4. if [ "${DOCKER_COMPOSE_VERSION}" == "standalone" ]; then
  5. LATEST_COMPOSE=$(curl -#L https://www.servercow.de/docker-compose/latest.php)
  6. COMPOSE_VERSION=$(docker-compose version --short)
  7. if [[ "$LATEST_COMPOSE" != "$COMPOSE_VERSION" ]]; then
  8. echo -e "\e[33mA new docker-compose Version is available: $LATEST_COMPOSE\e[0m"
  9. echo -e "\e[33mYour Version is: $COMPOSE_VERSION\e[0m"
  10. else
  11. echo -e "\e[32mYour docker-compose Version is up to date! Not updating it...\e[0m"
  12. exit 0
  13. fi
  14. read -r -p "Do you want to update your docker-compose Version? It will automatic upgrade your docker-compose installation (recommended)? [y/N] " updatecomposeresponse
  15. if [[ ! "${updatecomposeresponse}" =~ ^([yY][eE][sS]|[yY])+$ ]]; then
  16. echo "OK, not updating docker-compose."
  17. exit 0
  18. fi
  19. echo -e "\e[32mFetching new docker-compose (standalone) version...\e[0m"
  20. echo -e "\e[32mTrying to determine GLIBC version...\e[0m"
  21. if ldd --version > /dev/null; then
  22. GLIBC_V=$(ldd --version | grep -E '(GLIBC|GNU libc)' | rev | cut -d ' ' -f1 | rev | cut -d '.' -f2)
  23. if [ ! -z "${GLIBC_V}" ] && [ ${GLIBC_V} -gt 27 ]; then
  24. DC_DL_SUFFIX=
  25. else
  26. DC_DL_SUFFIX=legacy
  27. fi
  28. else
  29. DC_DL_SUFFIX=legacy
  30. fi
  31. sleep 1
  32. if [[ $(command -v pip 2>&1) && $(pip list --local 2>&1 | grep -v DEPRECATION | grep -c docker-compose) == 1 || $(command -v pip3 2>&1) && $(pip3 list --local 2>&1 | grep -v DEPRECATION | grep -c docker-compose) == 1 ]]; then
  33. echo -e "\e[33mFound a docker-compose Version installed with pip!\e[0m"
  34. echo -e "\e[31mPlease uninstall the pip Version of docker-compose since it doesn´t support Versions higher than 1.29.2.\e[0m"
  35. sleep 2
  36. echo -e "\e[33mExiting...\e[0m"
  37. exit 1
  38. #prevent breaking a working docker-compose installed with pip
  39. elif [[ $(curl -sL -w "%{http_code}" https://www.servercow.de/docker-compose/latest.php?vers=${DC_DL_SUFFIX} -o /dev/null) == "200" ]]; then
  40. LATEST_COMPOSE=$(curl -#L https://www.servercow.de/docker-compose/latest.php)
  41. COMPOSE_VERSION=$(docker-compose version --short)
  42. if [[ "$LATEST_COMPOSE" != "$COMPOSE_VERSION" ]]; then
  43. COMPOSE_PATH=$(command -v docker-compose)
  44. if [[ -w ${COMPOSE_PATH} ]]; then
  45. curl -#L https://github.com/docker/compose/releases/download/v${LATEST_COMPOSE}/docker-compose-$(uname -s)-$(uname -m) > $COMPOSE_PATH
  46. chmod +x $COMPOSE_PATH
  47. echo -e "\e[32mYour Docker Compose (standalone) has been updated to: $LATEST_COMPOSE\e[0m"
  48. exit 0
  49. else
  50. echo -e "\e[33mWARNING: $COMPOSE_PATH is not writable, but new version $LATEST_COMPOSE is available (installed: $COMPOSE_VERSION)\e[0m"
  51. exit 1
  52. fi
  53. fi
  54. else
  55. echo -e "\e[33mCannot determine latest docker-compose version, skipping...\e[0m"
  56. exit 1
  57. fi
  58. elif [ "${DOCKER_COMPOSE_VERSION}" == "native" ]; then
  59. echo -e "\e[31mYou are using the native Docker Compose Plugin. This Script is for the standalone Docker Compose Version only.\e[0m"
  60. sleep 2
  61. echo -e "\e[33mNotice: You'll have to update this Compose Version via your Package Manager manually!\e[0m"
  62. exit 1
  63. else
  64. echo -e "\e[31mCan not read DOCKER_COMPOSE_VERSION variable from mailcow.conf! Is your mailcow up to date? Exiting...\e[0m"
  65. exit 1
  66. fi