Browse Source

[Dovecot] Imapsync: Set is_running = 0 on restart

André 7 years ago
parent
commit
4a403e9323

+ 1 - 0
data/Dockerfiles/dovecot/Dockerfile

@@ -56,6 +56,7 @@ RUN apt-get update && apt-get -y --no-install-recommends install \
   liburi-perl \
   lzma-dev \
   make \
+  mysql-client \
   procps \
   supervisor \
   cron \

+ 10 - 0
data/Dockerfiles/dovecot/docker-entrypoint.sh

@@ -1,6 +1,12 @@
 #!/bin/bash
 set -e
 
+# Wait for MySQL to warm-up
+while ! mysqladmin ping --host mysql -u${DBUSER} -p${DBPASS} --silent; do
+  echo "Waiting for database to come up..."
+  sleep 2
+done
+
 # Hard-code env vars to imapsync due to cron not passing them to the perl script
 sed -i "/^\$DBUSER/c\\\$DBUSER='${DBUSER}';" /usr/local/bin/imapsync_cron.pl
 sed -i "/^\$DBPASS/c\\\$DBPASS='${DBPASS}';" /usr/local/bin/imapsync_cron.pl
@@ -123,4 +129,8 @@ touch /etc/crontab /etc/cron.*/*
 # Clean old PID if any
 [[ -f /usr/local/var/run/dovecot/master.pid ]] && rm /usr/local/var/run/dovecot/master.pid
 
+# Clean stopped imapsync jobs
+IMAPSYNC_TABLE=$(mysql -h mysql-mailcow -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "SHOW TABLES LIKE 'imapsync'" -Bs)
+[[ ! -z ${IMAPSYNC_TABLE} ]] && mysql -h mysql-mailcow -u ${DBUSER} -p${DBPASS} ${DBNAME} -e "UPDATE imapsync SET is_running='0'"
+
 exec "$@"

+ 1 - 1
docker-compose.yml

@@ -167,7 +167,7 @@ services:
             - sogo
 
     dovecot-mailcow:
-      image: mailcow/dovecot:1.26
+      image: mailcow/dovecot:1.27
       build: ./data/Dockerfiles/dovecot
       cap_add:
         - NET_BIND_SERVICE