From 15aee979a070467c3d9d1a51a388b07a97c352ae Mon Sep 17 00:00:00 2001
From: David Beniamine <david.beniamine@tetras-libre.fr>
Date: Fri, 18 Feb 2022 16:38:02 +0100
Subject: [PATCH] Auto empty cache upon FS change and stack restart

---
 config/config.yml    |  1 -
 docker/Dockerfile    |  8 +++++++-
 docker/entrypoint.sh | 22 ++++++++++++++++++++++
 3 files changed, 29 insertions(+), 2 deletions(-)
 create mode 100644 docker/entrypoint.sh

diff --git a/config/config.yml b/config/config.yml
index 897e687..c972739 100644
--- a/config/config.yml
+++ b/config/config.yml
@@ -67,4 +67,3 @@ PicoZCache:
   dir: content/cache/html/    # Directory where cache should be saved
   time: 2592000           # Interval between caching (period from one to second cache) in seconds, here is 7 days = 60 * 60 * 24 * 30.
   xhtml_output: false    # If true, XHTML Content-Type header will be sent when loading cache page
-  ignore_url_regex: "/blog/"
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 1d2d0ba..4c67873 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -5,7 +5,7 @@ RUN composer create-project --no-interaction picocms/pico-composer pico
 FROM php:7.4-apache
 
 RUN apt-get update && \
-    apt-get install -y libonig-dev libxml2-dev locales && \
+    apt-get install -y inotify-tools libonig-dev libxml2-dev locales && \
     docker-php-ext-install -j$(nproc) dom mbstring && \
     docker-php-ext-enable dom mbstring
 
@@ -19,3 +19,9 @@ COPY --from=builder /app/pico /var/www/html
 RUN a2enmod rewrite
 
 COPY pico.conf /etc/apache2/sites-enabled/000-default.conf
+
+COPY entrypoint.sh /entrypoint.sh
+
+RUN chmod +x /entrypoint.sh
+
+ENTRYPOINT /entrypoint.sh
diff --git a/docker/entrypoint.sh b/docker/entrypoint.sh
new file mode 100644
index 0000000..518190d
--- /dev/null
+++ b/docker/entrypoint.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+basedir=/var/www/html
+cachedir=$basedir/content/cache
+clear_cache() {
+    echo "Clearing HTML cache"
+    rm -rf $cachedir/html/*
+    echo "Clearing TWIG cache"
+    rm -rf $cachedir/twig/*
+}
+watcher() {
+    clear_cache
+    inotifywait  -m -r -e modify -e move -e create -e delete \
+        --exclude '\.*.sw?' \
+        --exclude $cachedir \
+        $basedir |\
+        while read dir ev file; do
+            echo "File $ev detected"
+            clear_cache
+        done
+}
+watcher &
+exec apache2ctl -DFOREGROUND
-- 
GitLab