From a7f97ef23b33ef988829e4c790e79d9ded62698a Mon Sep 17 00:00:00 2001
From: Christoph Reiter <reiter.christoph@gmail.com>
Date: Wed, 3 Aug 2022 16:15:53 +0200
Subject: [PATCH] docker: add a cron docker service

This adds busybox to the php-fpm image and creates a separate container
via docker-compose which starts crond and calls our cron command
every 5 minutes.

This makes sure our cron jobs are called during development, just like
on a production server.
---
 docker-dev/docker-compose.yml | 12 ++++++++++++
 docker-dev/php-fpm/Dockerfile |  7 +++++++
 docker-dev/php-fpm/cron.sh    |  4 ++++
 3 files changed, 23 insertions(+)
 create mode 100755 docker-dev/php-fpm/cron.sh

diff --git a/docker-dev/docker-compose.yml b/docker-dev/docker-compose.yml
index 9ecb0cb..822f1d5 100644
--- a/docker-dev/docker-compose.yml
+++ b/docker-dev/docker-compose.yml
@@ -39,6 +39,18 @@ services:
       - ..:/application
       - ./php-fpm/php-ini-overrides.ini:/etc/php/7.4/cli/conf.d/99-overrides.ini
 
+  cron:
+    build:
+      context: php-fpm
+    depends_on:
+      - mariadb
+      - redis
+    working_dir: /application
+    entrypoint: /cron.sh
+    volumes:
+      - ..:/application
+      - ./php-fpm/php-ini-overrides.ini:/etc/php/7.4/cli/conf.d/99-overrides.ini
+
   redis:
     image: "redis"
     entrypoint: redis-server --save 60 1 --loglevel warning
diff --git a/docker-dev/php-fpm/Dockerfile b/docker-dev/php-fpm/Dockerfile
index 86647c0..f5f754d 100644
--- a/docker-dev/php-fpm/Dockerfile
+++ b/docker-dev/php-fpm/Dockerfile
@@ -6,7 +6,9 @@ ENV DEBIAN_FRONTEND=noninteractive
 RUN apt-get update \
     && apt-get -y --no-install-recommends install \
         ca-certificates \
+        tini \
         libldap-common \
+        busybox-static \
         curl \
         unzip \
         sudo \
@@ -36,6 +38,11 @@ RUN apt-get update \
     && apt-get clean \
     && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
 
+# Cron setup, run every 5 minutes
+RUN mkdir -p /var/spool/cron/crontabs; \
+    echo '*/5 * * * * php -f /application/bin/console dbp:relay:core:cron' > /var/spool/cron/crontabs/user
+COPY cron.sh /
+
 STOPSIGNAL SIGQUIT
 
 ARG UID
diff --git a/docker-dev/php-fpm/cron.sh b/docker-dev/php-fpm/cron.sh
new file mode 100755
index 0000000..efd9e1d
--- /dev/null
+++ b/docker-dev/php-fpm/cron.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -eu
+
+exec tini -- sudo busybox crond -f -l 0 -L /dev/stdout
\ No newline at end of file
-- 
GitLab