From 44d7aed73e6b7cf9c4027dc2baafd7407cf11a0b Mon Sep 17 00:00:00 2001 From: kj_sh604 Date: Sun, 1 Mar 2026 20:04:42 -0500 Subject: refactor: copy container contents into fresh volume --- Dockerfile | 13 +++++++++---- docker-entrypoint.sh | 11 +++++++++++ 2 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 docker-entrypoint.sh 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 -- cgit v1.2.3