diff --git a/.github/ISSUE_TEMPLATE/Image_issue.md b/.github/ISSUE_TEMPLATE/01-Image_issue.md similarity index 84% rename from .github/ISSUE_TEMPLATE/Image_issue.md rename to .github/ISSUE_TEMPLATE/01-Image_issue.md index 725fca88..be8f7f22 100644 --- a/.github/ISSUE_TEMPLATE/Image_issue.md +++ b/.github/ISSUE_TEMPLATE/01-Image_issue.md @@ -1,6 +1,7 @@ --- -name: šŸ› Image issue -about: Issues related to the Nextcloud Docker image +name: šŸ› Report a bug in the image +about: Create a report to help us improve the image +labels: "bug, 0. Needs triage" --- diff --git a/29/apache/Dockerfile b/29/apache/Dockerfile index 266fc236..0fe11ddc 100644 --- a/29/apache/Dockerfile +++ b/29/apache/Dockerfile @@ -1,14 +1,12 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template FROM php:8.2-apache-bookworm -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ + ffmpeg \ busybox-static \ bzip2 \ libldap-common \ @@ -68,23 +66,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/29/apache/entrypoint.sh b/29/apache/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/29/apache/entrypoint.sh +++ b/29/apache/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/29/fpm-alpine/Dockerfile b/29/fpm-alpine/Dockerfile index 3c79d672..95203d2d 100644 --- a/29/fpm-alpine/Dockerfile +++ b/29/fpm-alpine/Dockerfile @@ -1,13 +1,11 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template FROM php:8.2-fpm-alpine3.21 -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apk add --no-cache \ + ffmpeg \ imagemagick \ imagemagick-pdf \ imagemagick-jpeg \ @@ -65,23 +63,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/29/fpm-alpine/entrypoint.sh b/29/fpm-alpine/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/29/fpm-alpine/entrypoint.sh +++ b/29/fpm-alpine/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/29/fpm/Dockerfile b/29/fpm/Dockerfile index e89e6e73..9c4cb668 100644 --- a/29/fpm/Dockerfile +++ b/29/fpm/Dockerfile @@ -1,14 +1,12 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template FROM php:8.2-fpm-bookworm -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ + ffmpeg \ busybox-static \ bzip2 \ libldap-common \ @@ -68,23 +66,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/29/fpm/entrypoint.sh b/29/fpm/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/29/fpm/entrypoint.sh +++ b/29/fpm/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/30/apache/Dockerfile b/30/apache/Dockerfile index e0ee6521..ab1ae534 100644 --- a/30/apache/Dockerfile +++ b/30/apache/Dockerfile @@ -1,14 +1,12 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template -FROM php:8.2-apache-bookworm - -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b +FROM php:8.3-apache-bookworm # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ + ffmpeg \ busybox-static \ bzip2 \ libldap-common \ @@ -68,23 +66,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/30/apache/entrypoint.sh b/30/apache/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/30/apache/entrypoint.sh +++ b/30/apache/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/30/fpm-alpine/Dockerfile b/30/fpm-alpine/Dockerfile index 32ef9ca2..f0c414b2 100644 --- a/30/fpm-alpine/Dockerfile +++ b/30/fpm-alpine/Dockerfile @@ -1,13 +1,11 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template -FROM php:8.2-fpm-alpine3.21 - -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b +FROM php:8.3-fpm-alpine3.21 # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apk add --no-cache \ + ffmpeg \ imagemagick \ imagemagick-pdf \ imagemagick-jpeg \ @@ -65,23 +63,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/30/fpm-alpine/entrypoint.sh b/30/fpm-alpine/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/30/fpm-alpine/entrypoint.sh +++ b/30/fpm-alpine/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/30/fpm/Dockerfile b/30/fpm/Dockerfile index 42fa3bc4..1c782132 100644 --- a/30/fpm/Dockerfile +++ b/30/fpm/Dockerfile @@ -1,14 +1,12 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template -FROM php:8.2-fpm-bookworm - -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b +FROM php:8.3-fpm-bookworm # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ + ffmpeg \ busybox-static \ bzip2 \ libldap-common \ @@ -68,23 +66,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/30/fpm/entrypoint.sh b/30/fpm/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/30/fpm/entrypoint.sh +++ b/30/fpm/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/31/apache/Dockerfile b/31/apache/Dockerfile index fa82eda7..6421c7b0 100644 --- a/31/apache/Dockerfile +++ b/31/apache/Dockerfile @@ -1,9 +1,6 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template FROM php:8.3-apache-bookworm -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ @@ -68,23 +65,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/31/apache/entrypoint.sh b/31/apache/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/31/apache/entrypoint.sh +++ b/31/apache/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/31/fpm-alpine/Dockerfile b/31/fpm-alpine/Dockerfile index 77cadc5b..a20a12e8 100644 --- a/31/fpm-alpine/Dockerfile +++ b/31/fpm-alpine/Dockerfile @@ -1,9 +1,6 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template FROM php:8.3-fpm-alpine3.21 -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ @@ -65,23 +62,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/31/fpm-alpine/entrypoint.sh b/31/fpm-alpine/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/31/fpm-alpine/entrypoint.sh +++ b/31/fpm-alpine/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/31/fpm/Dockerfile b/31/fpm/Dockerfile index 0d25db84..92f3935c 100644 --- a/31/fpm/Dockerfile +++ b/31/fpm/Dockerfile @@ -1,9 +1,6 @@ # DO NOT EDIT: created by update.sh from Dockerfile-debian.template FROM php:8.3-fpm-bookworm -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ @@ -68,23 +65,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-5.1.24; \ pecl install igbinary-3.2.16; \ + pecl install imagick-3.8.0; \ pecl install memcached-3.3.0 \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-6.2.0 \ diff --git a/31/fpm/entrypoint.sh b/31/fpm/entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/31/fpm/entrypoint.sh +++ b/31/fpm/entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template index 2295bddf..688b4e85 100644 --- a/Dockerfile-alpine.template +++ b/Dockerfile-alpine.template @@ -1,12 +1,10 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%%%%ALPINE_VERSION%% -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apk add --no-cache \ + ffmpeg \ imagemagick \ imagemagick-pdf \ imagemagick-jpeg \ @@ -64,23 +62,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-%%APCU_VERSION%%; \ pecl install igbinary-%%IGBINARY_VERSION%%; \ + pecl install imagick-%%IMAGICK_VERSION%%; \ pecl install memcached-%%MEMCACHED_VERSION%% \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-%%REDIS_VERSION%% \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 8734caa9..ade20b7f 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -1,13 +1,11 @@ FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%% -# Define the commit hash for imagick as a variable -ENV IMAGICK_COMMIT_HASH d7d3c24af1b4f599897408f1714600b69a56473b - # entrypoint.sh and cron.sh dependencies RUN set -ex; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ + ffmpeg \ busybox-static \ bzip2 \ libldap-common \ @@ -67,23 +65,10 @@ RUN set -ex; \ zip \ ; \ \ -# The master version on the imagick repository is compatible with PHP 8.3. However, the PECL version is not updated yet. -# As soon as it will get updated, we can switch back to the PECL version, instead of having this workaround. - curl -fsSL -o imagick.tar.gz "https://github.com/Imagick/imagick/archive/$IMAGICK_COMMIT_HASH.tar.gz"; \ - tar -xzf imagick.tar.gz -C /tmp; \ - rm imagick.tar.gz; \ - cd "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - sed -i "s/@PACKAGE_VERSION@/git-$(echo ${IMAGICK_COMMIT_HASH} | cut -c 1-7)/" php_imagick.h; \ - phpize; \ - ./configure; \ - make; \ - make install; \ - cd; \ - rm -r "/tmp/imagick-$IMAGICK_COMMIT_HASH"; \ - \ # pecl will claim success even if one install fails, so we need to perform each install separately pecl install APCu-%%APCU_VERSION%%; \ pecl install igbinary-%%IGBINARY_VERSION%%; \ + pecl install imagick-%%IMAGICK_VERSION%%; \ pecl install memcached-%%MEMCACHED_VERSION%% \ --configureoptions 'enable-memcached-igbinary="yes"'; \ pecl install redis-%%REDIS_VERSION%% \ diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8e178f2e..e3b88f14 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -23,32 +23,39 @@ run_as() { run_path() { local hook_folder_path="/docker-entrypoint-hooks.d/$1" local return_code=0 + local found=0 - if ! [ -d "${hook_folder_path}" ]; then - echo "=> Skipping the folder \"${hook_folder_path}\", because it doesn't exist" + echo "=> Searching for hook scripts (*.sh) to run, located in the folder \"${hook_folder_path}\"" + + if ! [ -d "${hook_folder_path}" ] || directory_empty "${hook_folder_path}"; then + echo "==> Skipped: the \"$1\" folder is empty (or does not exist)" return 0 fi - echo "=> Searching for scripts (*.sh) to run, located in the folder: ${hook_folder_path}" - - ( - find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | while read -r script_file_path; do + find "${hook_folder_path}" -maxdepth 1 -iname '*.sh' '(' -type f -o -type l ')' -print | sort | ( + while read -r script_file_path; do if ! [ -x "${script_file_path}" ]; then - echo "==> The script \"${script_file_path}\" was skipped, because it didn't have the executable flag" + echo "==> The script \"${script_file_path}\" was skipped, because it lacks the executable flag" + found=$((found-1)) continue fi echo "==> Running the script (cwd: $(pwd)): \"${script_file_path}\"" - + found=$((found+1)) run_as "${script_file_path}" || return_code="$?" if [ "${return_code}" -ne "0" ]; then - echo "==> Failed at executing \"${script_file_path}\". Exit code: ${return_code}" + echo "==> Failed at executing script \"${script_file_path}\". Exit code: ${return_code}" exit 1 fi - echo "==> Finished the script: \"${script_file_path}\"" + echo "==> Finished executing the script: \"${script_file_path}\"" done + if [ "$found" -lt "1" ]; then + echo "==> Skipped: the \"$1\" folder does not contain any valid scripts" + else + echo "=> Completed executing scripts in the \"$1\" folder" + fi ) } @@ -114,13 +121,21 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP # check if redis host is an unix socket path if [ "$(echo "$REDIS_HOST" | cut -c1-1)" = "/" ]; then if [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"unix://${REDIS_HOST}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"unix://${REDIS_HOST}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"unix://${REDIS_HOST}\"" fi # check if redis password has been set elif [ -n "${REDIS_HOST_PASSWORD+x}" ]; then - echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + if [ -n "${REDIS_HOST_USER+x}" ]; then + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth[]=${REDIS_HOST_USER}&auth[]=${REDIS_HOST_PASSWORD}\"" + else + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}?auth=${REDIS_HOST_PASSWORD}\"" + fi else echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" fi @@ -237,12 +252,14 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then echo "Setting trusted domains…" + set -f # turn off glob NC_TRUSTED_DOMAIN_IDX=1 - for DOMAIN in $NEXTCLOUD_TRUSTED_DOMAINS ; do - DOMAIN=$(echo "$DOMAIN" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') - run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=$DOMAIN" + for DOMAIN in ${NEXTCLOUD_TRUSTED_DOMAINS}; do + DOMAIN=$(echo "${DOMAIN}" | sed -e 's/^[[:space:]]*//' -e 's/[[:space:]]*$//') + run_as "php /var/www/html/occ config:system:set trusted_domains $NC_TRUSTED_DOMAIN_IDX --value=\"${DOMAIN}\"" NC_TRUSTED_DOMAIN_IDX=$((NC_TRUSTED_DOMAIN_IDX+1)) done + set +f # turn glob back on fi run_path post-installation diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 2b523c0e..14ea578f 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -Eeuo pipefail -stable_channel='30.0.9' +stable_channel='31.0.4' self="$(basename "$BASH_SOURCE")" cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" diff --git a/update.sh b/update.sh index 0f224b06..3128e4a3 100755 --- a/update.sh +++ b/update.sh @@ -10,8 +10,8 @@ declare -A debian_version=( ) declare -A php_version=( - [default]='8.2' - [31]='8.3' + [29]='8.2' + [default]='8.3' ) declare -A cmd=( @@ -55,7 +55,7 @@ igbinary_version="$( )" imagick_version="$( - git ls-remote --tags https://github.com/mkoppanen/imagick.git \ + git ls-remote --tags https://github.com/imagick/imagick.git \ | cut -d/ -f3 \ | grep -viE '[a-z]' \ | tr -d '^{}' \ diff --git a/versions.json b/versions.json index 1680b69a..daac9da6 100644 --- a/versions.json +++ b/versions.json @@ -35,19 +35,19 @@ "variant": "apache", "base": "debian", "baseVersion": "bookworm", - "phpVersion": "8.2" + "phpVersion": "8.3" }, "fpm": { "variant": "fpm", "base": "debian", "baseVersion": "bookworm", - "phpVersion": "8.2" + "phpVersion": "8.3" }, "fpm-alpine": { "variant": "fpm-alpine", "base": "alpine", "baseVersion": "3.21", - "phpVersion": "8.2" + "phpVersion": "8.3" } } },