aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorkj_sh6042026-03-01 20:04:42 -0500
committerkj_sh6042026-03-01 20:04:42 -0500
commit44d7aed73e6b7cf9c4027dc2baafd7407cf11a0b (patch)
treeddf70401d82776343930bafdc9e5b95c532525a0
parentfe040673f93a6828b62c85c162d059f62425ef3c (diff)
refactor: copy container contents into fresh volume
-rw-r--r--Dockerfile13
-rw-r--r--docker-entrypoint.sh11
2 files changed, 20 insertions, 4 deletions
diff --git a/Dockerfile b/Dockerfile
index 2a31b2a..9309d26 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -30,16 +30,21 @@ RUN a2enmod rewrite
RUN echo "upload_max_filesize = 50M" > /usr/local/etc/php/conf.d/sent-web.ini \
&& echo "post_max_size = 50M" >> /usr/local/etc/php/conf.d/sent-web.ini
+# copy entrypoint script
+COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
+RUN chmod +x /usr/local/bin/docker-entrypoint.sh
+
# copy application
COPY src/ /var/www/html/src/
-# ensure uploads directory exists with correct permissions
-RUN mkdir -p /var/www/html/src/uploads \
- && chown -R www-data:www-data /var/www/html/src/uploads
+# stash a seed copy of uploads so the entrypoint can populate a fresh volume
+RUN mkdir -p /opt/uploads-seed \
+ && cp -r /var/www/html/src/uploads/. /opt/uploads-seed/ \
+ && chown -R www-data:www-data /var/www/html/src/uploads /opt/uploads-seed
EXPOSE 3000
# tini as PID 1 ensures SIGTERM is properly forwarded to apache,
# preventing the 'permission denied' error on docker stop
-ENTRYPOINT ["/usr/bin/tini", "--"]
+ENTRYPOINT ["/usr/bin/tini", "--", "/usr/local/bin/docker-entrypoint.sh"]
CMD ["apache2-foreground"] \ No newline at end of file
diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh
new file mode 100644
index 0000000..8ffba10
--- /dev/null
+++ b/docker-entrypoint.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+set -e
+
+if [ -z "$(ls -A /var/www/html/src/uploads 2>/dev/null)" ] && \
+ [ -d /opt/uploads-seed ]; then
+ cp -r /opt/uploads-seed/. /var/www/html/src/uploads/
+fi
+
+chown -R www-data:www-data /var/www/html/src/uploads
+
+exec "$@" \ No newline at end of file