public
nobgit
read
NobMail
Based on mailcow: dockerized
Languages
Repository composition by tracked source files.
PHP
49%
JavaScript
35%
HTML
9%
CSS
4%
Shell
2%
Python
1%
Lua
0%
Perl
0%
Ruby
0%
SCSS
0%
Create file
Wiki Documentation
Clone
https://nobgit.com/orgs/nobgit/nobmail.git
ssh://[email protected]:2222/orgs/nobgit/nobmail.git
Commit
Implemented user choice compose in cold-standby
1f3d9d4e
helper-scripts/_cold-standby.sh | 52 +++++++++++++++++++++++++++--------------
1 file changed, 35 insertions(+), 17 deletions(-)
Diff
diff --git a/helper-scripts/_cold-standby.sh b/helper-scripts/_cold-standby.sh
index fadee6f6..0e8885a3 100755
--- a/helper-scripts/_cold-standby.sh
+++ b/helper-scripts/_cold-standby.sh
@@ -77,7 +77,7 @@ function preflight_local_checks() {
exit 1
fi
- for bin in rsync docker docker-compose grep cut; do
+ for bin in rsync docker grep cut; do
if [[ -z $(which ${bin}) ]]; then
>&2 echo -e "\e[31mCannot find ${bin} in local PATH, exiting...\e[0m"
exit 1
@@ -111,7 +111,7 @@ function preflight_remote_checks() {
exit 1
fi
- for bin in rsync docker docker-compose; do
+ for bin in rsync docker; do
if ! ssh -o StrictHostKeyChecking=no \
-i "${REMOTE_SSH_KEY}" \
${REMOTE_SSH_HOST} \
@@ -121,17 +121,44 @@ function preflight_remote_checks() {
exit 1
fi
done
-}
-preflight_local_checks
-preflight_remote_checks
+ ssh -o StrictHostKeyChecking=no \
+ -i "${REMOTE_SSH_KEY}" \
+ ${REMOTE_SSH_HOST} \
+ -p ${REMOTE_SSH_PORT} \
+ "bash -s" << "EOF"
+if docker compose > /dev/null 2>&1; then
+ exit 0
+elif docker-compose version --short | grep "^2." > /dev/null 2>&1; then
+ exit 1
+else
+exit 2
+fi
+EOF
+
+if [ $? = 0 ]; then
+ COMPOSE_COMMAND="docker compose"
+ echo "DEBUG: Using native docker compose on remote"
+
+elif [ $? = 1 ]; then
+ COMPOSE_COMMAND="docker-compose"
+ echo "DEBUG: Using standalone docker compose on remote"
+
+else
+ echo -e "\e[31mCannot find any Docker Compose on remote, exiting...\e[0m"
+ exit 1
+fi
+}
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
-COMPOSE_FILE="${SCRIPT_DIR}/../docker-compose.yml"
source "${SCRIPT_DIR}/../mailcow.conf"
+COMPOSE_FILE="${SCRIPT_DIR}/../docker-compose.yml"
CMPS_PRJ=$(echo ${COMPOSE_PROJECT_NAME} | tr -cd 'A-Za-z-_')
SQLIMAGE=$(grep -iEo '(mysql|mariadb)\:.+' "${COMPOSE_FILE}")
+preflight_local_checks
+preflight_remote_checks
+
echo
echo -e "\033[1mFound compose project name ${CMPS_PRJ} for ${MAILCOW_HOSTNAME}\033[0m"
echo -e "\033[1mFound SQL ${SQLIMAGE}\033[0m"
@@ -258,7 +285,7 @@ echo "OK"
-i "${REMOTE_SSH_KEY}" \
${REMOTE_SSH_HOST} \
-p ${REMOTE_SSH_PORT} \
- docker-compose -f "${SCRIPT_DIR}/../docker-compose.yml" pull --no-parallel --quiet 2>&1 ; then
+ ${COMPOSE_COMMAND} -f "${SCRIPT_DIR}/../docker-compose.yml" pull --no-parallel --quiet 2>&1 ; then
>&2 echo -e "\e[31m[ERR]\e[0m - Could not pull images on remote"
fi
@@ -271,13 +298,4 @@ if ! ssh -o StrictHostKeyChecking=no \
>&2 echo -e "\e[31m[ERR]\e[0m - Could not cleanup old images on remote"
fi
-echo -e "\033[1mExecuting update script and checking for new docker-compose Version on remote...\033[0m"
-if ! ssh -o StrictHostKeyChecking=no \
- -i "${REMOTE_SSH_KEY}" \
- ${REMOTE_SSH_HOST} \
- -p ${REMOTE_SSH_PORT} \
- ${SCRIPT_DIR}/../update.sh -f --update-compose ; then
- >&2 echo -e "\e[31m[ERR]\e[0m - Could not fetch docker-compose on remote"
-fi
-
-echo -e "\e[32mDone\e[0m"
+echo -e "\e[32mDone\e[0m"
\ No newline at end of file