From e3e1ddb8c810643f1fad0519e6e4cad96da22fb6 Mon Sep 17 00:00:00 2001 From: aptalca Date: Thu, 2 Sep 2021 14:15:19 -0400 Subject: [PATCH] work around overlayfs bug --- Dockerfile | 1 + Dockerfile.aarch64 | 1 + Dockerfile.armhf | 1 + root/etc/cont-init.d/30-config | 51 ++++++++++++++++++---------------- 4 files changed, 30 insertions(+), 24 deletions(-) diff --git a/Dockerfile b/Dockerfile index 8491798..cecc2e3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -51,6 +51,7 @@ RUN \ /tmp/projectsend.zip -d \ /app/projectsend && \ mv /app/projectsend/upload /defaults/ && \ + mv /app/projectsend /app/projectsend-tmp && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* diff --git a/Dockerfile.aarch64 b/Dockerfile.aarch64 index c821989..b8cd95e 100644 --- a/Dockerfile.aarch64 +++ b/Dockerfile.aarch64 @@ -51,6 +51,7 @@ RUN \ /tmp/projectsend.zip -d \ /app/projectsend && \ mv /app/projectsend/upload /defaults/ && \ + mv /app/projectsend /app/projectsend-tmp && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* diff --git a/Dockerfile.armhf b/Dockerfile.armhf index 0a3a9a2..93eb9f1 100644 --- a/Dockerfile.armhf +++ b/Dockerfile.armhf @@ -51,6 +51,7 @@ RUN \ /tmp/projectsend.zip -d \ /app/projectsend && \ mv /app/projectsend/upload /defaults/ && \ + mv /app/projectsend /app/projectsend-tmp && \ echo "**** cleanup ****" && \ rm -rf \ /tmp/* diff --git a/root/etc/cont-init.d/30-config b/root/etc/cont-init.d/30-config index bd42cfe..cf7d766 100644 --- a/root/etc/cont-init.d/30-config +++ b/root/etc/cont-init.d/30-config @@ -1,5 +1,11 @@ #!/usr/bin/with-contenv bash +if [ -d /app/projectsend-tmp ]; then + echo "New container detected. Setting up app folder and fixing permissions." + mv /app/projectsend-tmp /app/projectsend + chown -R abc:abc /app +fi + # set default values for variables PHP_MEMORY_LIMIT=${PHP_MEMORY_LIMIT:-512M} MAX_UPLOAD=${MAX_UPLOAD:-5000} @@ -8,17 +14,17 @@ USABLE_MAX_UPLOAD=${MAX_UPLOAD//[!0-9]/} # create our folders mkdir -p \ - /config/projectsend \ - /data/projectsend + /config/projectsend \ + /data/projectsend # configure php sed -i \ - -e "s#;*memory_limit =.*#memory_limit = ${PHP_MEMORY_LIMIT}#i" \ - -e "s#;*upload_max_filesize =.*#upload_max_filesize = ${USABLE_MAX_UPLOAD}M#i" \ - -e "s#;*max_file_uploads =.*#max_file_uploads = ${PHP_MAX_FILE_UPLOAD}#i" \ - -e "s#;*post_max_size =.*#post_max_size = ${USABLE_MAX_UPLOAD}M#i" \ - -e "s#;*cgi.fix_pathinfo=.*#cgi.fix_pathinfo= 0#i" \ - /etc/php7/php.ini + -e "s#;*memory_limit =.*#memory_limit = ${PHP_MEMORY_LIMIT}#i" \ + -e "s#;*upload_max_filesize =.*#upload_max_filesize = ${USABLE_MAX_UPLOAD}M#i" \ + -e "s#;*max_file_uploads =.*#max_file_uploads = ${PHP_MAX_FILE_UPLOAD}#i" \ + -e "s#;*post_max_size =.*#post_max_size = ${USABLE_MAX_UPLOAD}M#i" \ + -e "s#;*cgi.fix_pathinfo=.*#cgi.fix_pathinfo= 0#i" \ + /etc/php7/php.ini if ! grep -q 'config-v1' /config/nginx/site-confs/default; then cp /defaults/default /config/nginx/site-confs @@ -30,13 +36,13 @@ PREV_DIR=$(pwd) cd /defaults/upload || exit shopt -s globstar nullglob shopt -s dotglob - for i in * - do - if [ ! -e "/data/projectsend/${i}" ] ; then - cp -R "${i}" "/data/projectsend/${i}" - chown abc:abc "/data/projectsend/${i}" - fi - done + for i in * + do + if [ ! -e "/data/projectsend/${i}" ] ; then + cp -R "${i}" "/data/projectsend/${i}" + chown abc:abc "/data/projectsend/${i}" + fi + done shopt -u globstar nullglob shopt -u dotglob @@ -45,19 +51,16 @@ cd "${PREV_DIR}" || exit # create symlinks [[ ! -L /app/projectsend/upload ]] && \ - ln -sf /data/projectsend /app/projectsend/upload + ln -sf /data/projectsend /app/projectsend/upload [[ -f /app/projectsend/includes/sys.config.php ]] && \ - rm /app/projectsend/includes/sys.config.php + rm /app/projectsend/includes/sys.config.php [[ ! -L /app/projectsend/includes/sys.config.php ]] && \ - ln -sf /config/projectsend/sys.config.php /app/projectsend/includes/sys.config.php + ln -sf /config/projectsend/sys.config.php /app/projectsend/includes/sys.config.php # permissions +echo "Fixing app data permissions." chown abc:abc \ - /data/projectsend - + /data/projectsend chown -R abc:abc \ - /config - -find /app -print0 | xargs -P "$(nproc)" -I {} -0 chown -h abc:abc {} -find /app -print0 -type d | xargs -P "$(nproc)" -I {} -0 chown -h abc:abc {} + /config