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