From 7c8e5c10cad47d1faab0f28b9b81953835c1622e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20=F0=9F=A6=84?= <43847817+codiflow@users.noreply.github.com> Date: Tue, 10 Dec 2024 09:25:29 +0100 Subject: [PATCH] Add create command to prevent external: true warnings (#6203) This is related to https://github.com/mailcow/mailcow-dockerized/issues/5970 and https://community.mailcow.email/d/2126-backup-restore/2 It adds `docker compose create` to the script which gets executed directly after the sync of the mailcow-dockerized directory. This way the Docker daemon on the remote side creates everything and we get rid of the warning "volume "XYZ" already exists but was not created by Docker Compose. Use `external: true` to use an existing volume" This is helpful if you use the create-cold-standby.sh script to migrate your mailcow installation to another server and don't want to get those warnings after migration. Co-authored-by: Niklas Meyer --- helper-scripts/_cold-standby.sh | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/helper-scripts/_cold-standby.sh b/helper-scripts/_cold-standby.sh index 815152735..e2e5f1556 100755 --- a/helper-scripts/_cold-standby.sh +++ b/helper-scripts/_cold-standby.sh @@ -202,6 +202,17 @@ if [ ${ec} -ne 0 ] && [ ${ec} -ne 24 ]; then exit 1 fi +# Let the remote side create all network, volumes and containers to prevent need for external:true # +echo -e "\e[33mCreating networks, volumes and containers on remote...\e[0m" + +if ! ssh -o StrictHostKeyChecking=no \ + -i "${REMOTE_SSH_KEY}" \ + ${REMOTE_SSH_HOST} \ + -p ${REMOTE_SSH_PORT} \ + ${COMPOSE_COMMAND} -f "${SCRIPT_DIR}/../docker-compose.yml" create 2>&1 ; then + >&2 echo -e "\e[31m[ERR]\e[0m - Could not create networks, volumes and containers on remote" +fi + # Trigger a Redis save for a consistent Redis copy echo -ne "\033[1mRunning redis-cli save... \033[0m" docker exec $(docker ps -qf name=redis-mailcow) redis-cli -a ${REDISPASS} --no-auth-warning save @@ -326,4 +337,4 @@ if ! ssh -o StrictHostKeyChecking=no \ >&2 echo -e "\e[31m[ERR]\e[0m - Could not cleanup old images on remote" fi -echo -e "\e[32mDone\e[0m" \ No newline at end of file +echo -e "\e[32mDone\e[0m"