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
[Dovecot] Use events to kill supervisord when main proc dies [Postfix] Use events to kill supervisord when main proc dies [SOGo] Use events to kill supervisord when main proc dies
800eebd1
data/Dockerfiles/dovecot/Dockerfile | 4 +++-
data/Dockerfiles/dovecot/stop-supervisor.sh | 8 ++++++++
data/Dockerfiles/dovecot/supervisord.conf | 5 +++++
data/Dockerfiles/postfix/Dockerfile | 7 +++++++
data/Dockerfiles/postfix/stop-supervisor.sh | 8 ++++++++
data/Dockerfiles/postfix/supervisord.conf | 4 ++++
data/Dockerfiles/sogo/Dockerfile | 7 ++++++-
data/Dockerfiles/sogo/stop-supervisor.sh | 8 ++++++++
data/Dockerfiles/sogo/supervisord.conf | 4 ++++
9 files changed, 53 insertions(+), 2 deletions(-)
create mode 100755 data/Dockerfiles/dovecot/stop-supervisor.sh
create mode 100755 data/Dockerfiles/postfix/stop-supervisor.sh
create mode 100755 data/Dockerfiles/sogo/stop-supervisor.sh
Diff
diff --git a/data/Dockerfiles/dovecot/Dockerfile b/data/Dockerfiles/dovecot/Dockerfile
index fdfa84f5..9dd1c089 100644
--- a/data/Dockerfiles/dovecot/Dockerfile
+++ b/data/Dockerfiles/dovecot/Dockerfile
@@ -107,6 +107,7 @@ COPY sa-rules.sh /usr/local/bin/sa-rules.sh
COPY maildir_gc.sh /usr/local/bin/maildir_gc.sh
COPY docker-entrypoint.sh /
COPY supervisord.conf /etc/supervisor/supervisord.conf
+COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
RUN chmod +x /usr/local/lib/dovecot/sieve/rspamd-pipe-ham \
/usr/local/lib/dovecot/sieve/rspamd-pipe-spam \
@@ -115,7 +116,8 @@ RUN chmod +x /usr/local/lib/dovecot/sieve/rspamd-pipe-ham \
/usr/local/bin/imapsync \
/usr/local/bin/trim_logs.sh \
/usr/local/bin/sa-rules.sh \
- /usr/local/bin/maildir_gc.sh
+ /usr/local/bin/maildir_gc.sh \
+ /usr/local/sbin/stop-supervisor.sh
RUN groupadd -g 5000 vmail \
&& groupadd -g 401 dovecot \
diff --git a/data/Dockerfiles/dovecot/stop-supervisor.sh b/data/Dockerfiles/dovecot/stop-supervisor.sh
new file mode 100755
index 00000000..5394490c
--- /dev/null
+++ b/data/Dockerfiles/dovecot/stop-supervisor.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+printf "READY\n";
+
+while read line; do
+ echo "Processing Event: $line" >&2;
+ kill -3 $(cat "/var/run/supervisord.pid")
+done < /dev/stdin
diff --git a/data/Dockerfiles/dovecot/supervisord.conf b/data/Dockerfiles/dovecot/supervisord.conf
index f517c388..2e3026a0 100644
--- a/data/Dockerfiles/dovecot/supervisord.conf
+++ b/data/Dockerfiles/dovecot/supervisord.conf
@@ -1,6 +1,7 @@
[supervisord]
nodaemon=true
user=root
+pidfile=/var/run/supervisord.pid
[program:syslog-ng]
command=/usr/sbin/syslog-ng --foreground --no-caps
@@ -17,3 +18,7 @@ autorestart=true
[program:cron]
command=/usr/sbin/cron -f
autorestart=true
+
+[eventlistener:processes]
+command=/usr/local/sbin/stop-supervisor.sh
+events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
diff --git a/data/Dockerfiles/postfix/Dockerfile b/data/Dockerfiles/postfix/Dockerfile
index 9ad52fb2..05f2c3c7 100644
--- a/data/Dockerfiles/postfix/Dockerfile
+++ b/data/Dockerfiles/postfix/Dockerfile
@@ -48,6 +48,13 @@ COPY postfix.sh /opt/postfix.sh
COPY rspamd-pipe-ham /usr/local/bin/rspamd-pipe-ham
COPY rspamd-pipe-spam /usr/local/bin/rspamd-pipe-spam
COPY whitelist_forwardinghosts.sh /usr/local/bin/whitelist_forwardinghosts.sh
+COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
+
+RUN chmod +x /opt/postfix.sh \
+ /usr/local/bin/rspamd-pipe-ham \
+ /usr/local/bin/rspamd-pipe-spam \
+ /usr/local/bin/whitelist_forwardinghosts.sh \
+ /usr/local/sbin/stop-supervisor.sh
EXPOSE 588
diff --git a/data/Dockerfiles/postfix/stop-supervisor.sh b/data/Dockerfiles/postfix/stop-supervisor.sh
new file mode 100755
index 00000000..5394490c
--- /dev/null
+++ b/data/Dockerfiles/postfix/stop-supervisor.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+printf "READY\n";
+
+while read line; do
+ echo "Processing Event: $line" >&2;
+ kill -3 $(cat "/var/run/supervisord.pid")
+done < /dev/stdin
diff --git a/data/Dockerfiles/postfix/supervisord.conf b/data/Dockerfiles/postfix/supervisord.conf
index b5ae6b54..27494bd6 100644
--- a/data/Dockerfiles/postfix/supervisord.conf
+++ b/data/Dockerfiles/postfix/supervisord.conf
@@ -13,3 +13,7 @@ autostart=true
[program:postfix]
command=/opt/postfix.sh
autorestart=true
+
+[eventlistener:processes]
+command=/usr/local/sbin/stop-supervisor.sh
+events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL
diff --git a/data/Dockerfiles/sogo/Dockerfile b/data/Dockerfiles/sogo/Dockerfile
index 9d3965a7..f3bd1b25 100644
--- a/data/Dockerfiles/sogo/Dockerfile
+++ b/data/Dockerfiles/sogo/Dockerfile
@@ -40,13 +40,18 @@ RUN mkdir /usr/share/doc/sogo \
&& echo '0 0 * * * sogo /usr/sbin/sogo-tool update-autoreply -p /etc/sogo/sieve.creds' >> /etc/cron.d/sogo \
&& touch /etc/default/locale
-COPY ./bootstrap-sogo.sh /
+COPY ./bootstrap-sogo.sh /bootstrap-sogo.sh
COPY syslog-ng.conf /etc/syslog-ng/syslog-ng.conf
COPY supervisord.conf /etc/supervisor/supervisord.conf
COPY theme-blue.js /usr/lib/GNUstep/SOGo/WebServerResources/js/theme-blue.js
COPY theme-blue.css /usr/lib/GNUstep/SOGo/WebServerResources/css/theme-default.css
COPY sogo-full.svg /usr/lib/GNUstep/SOGo/WebServerResources/img/sogo-full.svg
COPY acl.diff /acl.diff
+COPY stop-supervisor.sh /usr/local/sbin/stop-supervisor.sh
+
+RUN chmod +x /bootstrap-sogo.sh \
+ /usr/local/sbin/stop-supervisor.sh
+
CMD exec /usr/bin/supervisord -c /etc/supervisor/supervisord.conf
VOLUME /usr/lib/GNUstep/SOGo/
diff --git a/data/Dockerfiles/sogo/stop-supervisor.sh b/data/Dockerfiles/sogo/stop-supervisor.sh
new file mode 100755
index 00000000..5394490c
--- /dev/null
+++ b/data/Dockerfiles/sogo/stop-supervisor.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+
+printf "READY\n";
+
+while read line; do
+ echo "Processing Event: $line" >&2;
+ kill -3 $(cat "/var/run/supervisord.pid")
+done < /dev/stdin
diff --git a/data/Dockerfiles/sogo/supervisord.conf b/data/Dockerfiles/sogo/supervisord.conf
index 1c1422b3..551a8e12 100644
--- a/data/Dockerfiles/sogo/supervisord.conf
+++ b/data/Dockerfiles/sogo/supervisord.conf
@@ -26,3 +26,7 @@ priority=3
startretries=10
autorestart=true
stopwaitsecs=120
+
+[eventlistener:processes]
+command=/usr/local/sbin/stop-supervisor.sh
+events=PROCESS_STATE_STOPPED, PROCESS_STATE_EXITED, PROCESS_STATE_FATAL