From f8e3a7d9374ad6a838d43f85ba273a9deab9a4f5 Mon Sep 17 00:00:00 2001
From: holzi1005 <holzi1005@noreply.localhost>
Date: Fri, 15 Nov 2024 19:56:18 +0100
Subject: [PATCH] Add distribted cron script

---
 jitsi_admin_application_dockerfile.txt | 138 +++++++++++++------------
 1 file changed, 71 insertions(+), 67 deletions(-)

diff --git a/jitsi_admin_application_dockerfile.txt b/jitsi_admin_application_dockerfile.txt
index e782647..e7e4bac 100644
--- a/jitsi_admin_application_dockerfile.txt
+++ b/jitsi_admin_application_dockerfile.txt
@@ -1,68 +1,72 @@
-FROM erseco/alpine-php-webserver:3.20.5
-
-ARG VERSION=
-ARG WEBDIR=/var/www/html
-
-LABEL version="${VERSION}" \
-    Maintainer="H2 invent GmbH" \
-    Description="Docker Image der Anwendung Jitsi Admin" \
-    org.opencontainers.version="${VERSION}" \
-    org.opencontainers.image.title="Jitsi Admin" \
-    org.opencontainers.image.license="AGPLv3" \
-    org.opencontainers.image.vendor="H2 invent GmbH" \
-    org.opencontainers.image.authors="Emanuel Holzmann <support@h2-invent.com>" \
-    org.opencontainers.image.source="https://github.com/h2-invent/jitsi-admin" \
-    org.opencontainers.image.documentation="https://meetling.de" \
-    org.opencontainers.image.url="https://jitsi-admin.de"
-
-USER root
-RUN apk --no-cache add \
-    unzip \
-    sqlite \
-    cronie \
-    libcap \
-    php83-sqlite3 \
-    php83-pdo_sqlite
-
-RUN mkdir /etc/service/crond \
-    && echo "#!/bin/sh -e" > /etc/service/crond/run \
-    && echo "exec 2>&1 /usr/sbin/crond -f" >> /etc/service/crond/run \
-    && chown -R nobody:nobody /etc/service/crond \
-    && chmod -R +x /etc/service/crond \
-    && chown nobody:nobody /usr/sbin/crond \
-    && setcap cap_setgid=ep /usr/sbin/crond \
-    && setcap cap_setuid=ep /usr/sbin/crond
-
-RUN mkdir /etc/service/symfony_messenger \
-    && echo "#!/bin/sh -e" > /etc/service/symfony_messenger/run \
-    && echo "exec 2>&1 php -d memory_limit=-1 ${WEBDIR}/bin/console messenger:consume async --memory-limit=512m --env=prod" >> /etc/service/symfony_messenger/run \
-    && chown -R nobody:nobody /etc/service/symfony_messenger \
-    && chmod -R +x /etc/service/symfony_messenger 
-
-RUN echo "# Docker Cron Jobs" > /etc/crontabs/nobody \
-    && echo "* * * * * curl http://localhost:8080/health/check" >> /etc/crontabs/nobody \
-    && chown nobody:nobody /etc/crontabs/nobody \
-    && chmod +x /etc/crontabs/nobody
-
-RUN echo "#!/bin/sh" > /docker-entrypoint-init.d/symfony.sh \
-    && echo "php ${WEBDIR}/bin/console cache:clear" >> /docker-entrypoint-init.d/symfony.sh \
-    && echo "php ${WEBDIR}/bin/console doc:mig:mig --no-interaction" >> /docker-entrypoint-init.d/symfony.sh \
-    && echo "php ${WEBDIR}/bin/console cache:clear" >> /docker-entrypoint-init.d/symfony.sh \
-    && chmod +x /docker-entrypoint-init.d/*
-
-RUN wget https://github.com/H2-invent/jitsi-admin/releases/download/${VERSION}/application.zip -O artifact.zip \
-    && unzip artifact.zip -d ${WEBDIR} \
-    && chown -R nobody ${WEBDIR}/public \
-    && chown -R nobody ${WEBDIR}/var \
-    && chmod -R 700 ${WEBDIR}/public \
-    && chmod -R 700 ${WEBDIR}/var
-
-RUN apk del unzip \
-    && rm artifact.zip \
-    && rm -r ${WEBDIR}/var/cache \
-    && rm -rf /var/cache/apk/*
-
-USER nobody
-
-ENV nginx_root_directory=/var/www/html/public \
+FROM erseco/alpine-php-webserver:3.20.5
+
+ARG VERSION=
+ARG WEBDIR=/var/www/html
+
+LABEL version="${VERSION}" \
+    Maintainer="H2 invent GmbH" \
+    Description="Docker Image der Anwendung Jitsi Admin" \
+    org.opencontainers.version="${VERSION}" \
+    org.opencontainers.image.title="Jitsi Admin" \
+    org.opencontainers.image.license="AGPLv3" \
+    org.opencontainers.image.vendor="H2 invent GmbH" \
+    org.opencontainers.image.authors="Emanuel Holzmann <support@h2-invent.com>" \
+    org.opencontainers.image.source="https://github.com/h2-invent/jitsi-admin" \
+    org.opencontainers.image.documentation="https://meetling.de" \
+    org.opencontainers.image.url="https://jitsi-admin.de"
+
+USER root
+RUN apk --no-cache add \
+    unzip \
+    sqlite \
+    cronie \
+    libcap \
+    php83-sqlite3 \
+    php83-pdo_sqlite
+
+RUN mkdir /etc/service/crond \
+    && echo "#!/bin/sh -e" > /etc/service/crond/run \
+    && echo "exec 2>&1 /usr/sbin/crond -f" >> /etc/service/crond/run \
+    && chown -R nobody:nobody /etc/service/crond \
+    && chmod -R +x /etc/service/crond \
+    && chown nobody:nobody /usr/sbin/crond \
+    && setcap cap_setgid=ep /usr/sbin/crond \
+    && setcap cap_setuid=ep /usr/sbin/crond
+
+RUN wget https://git.h2-invent.com/Public-System-Design/Public-Helperscripts/raw/branch/main/distributed_cron.sh -O /distributed_cron.sh \
+    && chmod +x /distributed_cron.sh
+
+RUN mkdir /etc/service/symfony_messenger \
+    && echo "#!/bin/sh -e" > /etc/service/symfony_messenger/run \
+    && echo "exec 2>&1 php -d memory_limit=-1 ${WEBDIR}/bin/console messenger:consume async --memory-limit=512m --env=prod" >> /etc/service/symfony_messenger/run \
+    && chown -R nobody:nobody /etc/service/symfony_messenger \
+    && chmod -R +x /etc/service/symfony_messenger 
+
+RUN echo "# Docker Cron Jobs" > /etc/crontabs/nobody \
+    && echo "* * * * * curl http://localhost:8080/health/check" >> /etc/crontabs/nobody \
+    && echo "* * * * * /bin/sh /distributed_cron.sh '${WEBDIR}/data/cron_log' 'php ${WEBDIR}/bin/console cron:run' >/dev/null 2>&1" >> /etc/crontabs/nobody \
+    && chown nobody:nobody /etc/crontabs/nobody \
+    && chmod +x /etc/crontabs/nobody
+
+RUN echo "#!/bin/sh" > /docker-entrypoint-init.d/symfony.sh \
+    && echo "php ${WEBDIR}/bin/console cache:clear" >> /docker-entrypoint-init.d/symfony.sh \
+    && echo "php ${WEBDIR}/bin/console doc:mig:mig --no-interaction" >> /docker-entrypoint-init.d/symfony.sh \
+    && echo "php ${WEBDIR}/bin/console cache:clear" >> /docker-entrypoint-init.d/symfony.sh \
+    && chmod +x /docker-entrypoint-init.d/*
+
+RUN wget https://github.com/H2-invent/jitsi-admin/releases/download/${VERSION}/application.zip -O artifact.zip \
+    && unzip artifact.zip -d ${WEBDIR} \
+    && chown -R nobody ${WEBDIR}/public \
+    && chown -R nobody ${WEBDIR}/var \
+    && chmod -R 700 ${WEBDIR}/public \
+    && chmod -R 700 ${WEBDIR}/var
+
+RUN apk del unzip \
+    && rm artifact.zip \
+    && rm -r ${WEBDIR}/var/cache \
+    && rm -rf /var/cache/apk/*
+
+USER nobody
+
+ENV nginx_root_directory=/var/www/html/public \
     upload_max_filesize=10M
\ No newline at end of file