From 5bbbde3734f0030f311f4a4b4c3c01dcd741fc9f Mon Sep 17 00:00:00 2001 From: Stephan Brunner Date: Sun, 2 Mar 2025 09:28:19 +0100 Subject: [PATCH 1/4] Add pre-initialization hook Allow execution of scripts even before the need to install or update Nextcloud is determined. Useful when needing to have additional update condition checks. Signed-off-by: Stephan Brunner --- 29/apache/Dockerfile | 3 ++- 29/apache/entrypoint.sh | 2 ++ 29/fpm-alpine/Dockerfile | 3 ++- 29/fpm-alpine/entrypoint.sh | 2 ++ 29/fpm/Dockerfile | 3 ++- 29/fpm/entrypoint.sh | 2 ++ 30/apache/Dockerfile | 3 ++- 30/apache/entrypoint.sh | 2 ++ 30/fpm-alpine/Dockerfile | 3 ++- 30/fpm-alpine/entrypoint.sh | 2 ++ 30/fpm/Dockerfile | 3 ++- 30/fpm/entrypoint.sh | 2 ++ 31/apache/Dockerfile | 3 ++- 31/apache/entrypoint.sh | 2 ++ 31/fpm-alpine/Dockerfile | 3 ++- 31/fpm-alpine/entrypoint.sh | 2 ++ 31/fpm/Dockerfile | 3 ++- 31/fpm/entrypoint.sh | 2 ++ Dockerfile-alpine.template | 3 ++- Dockerfile-debian.template | 3 ++- README.md | 4 +++- docker-entrypoint.sh | 2 ++ 22 files changed, 45 insertions(+), 12 deletions(-) diff --git a/29/apache/Dockerfile b/29/apache/Dockerfile index 3ca9ab54..ae0e703c 100644 --- a/29/apache/Dockerfile +++ b/29/apache/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/29/apache/entrypoint.sh b/29/apache/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/29/apache/entrypoint.sh +++ b/29/apache/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/29/fpm-alpine/Dockerfile b/29/fpm-alpine/Dockerfile index 47179e44..936e7644 100644 --- a/29/fpm-alpine/Dockerfile +++ b/29/fpm-alpine/Dockerfile @@ -135,7 +135,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/29/fpm-alpine/entrypoint.sh b/29/fpm-alpine/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/29/fpm-alpine/entrypoint.sh +++ b/29/fpm-alpine/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/29/fpm/Dockerfile b/29/fpm/Dockerfile index 3a984575..231472ae 100644 --- a/29/fpm/Dockerfile +++ b/29/fpm/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/29/fpm/entrypoint.sh b/29/fpm/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/29/fpm/entrypoint.sh +++ b/29/fpm/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/30/apache/Dockerfile b/30/apache/Dockerfile index 472e005d..dc3d457c 100644 --- a/30/apache/Dockerfile +++ b/30/apache/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/30/apache/entrypoint.sh b/30/apache/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/30/apache/entrypoint.sh +++ b/30/apache/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/30/fpm-alpine/Dockerfile b/30/fpm-alpine/Dockerfile index b060e713..b7db0a9e 100644 --- a/30/fpm-alpine/Dockerfile +++ b/30/fpm-alpine/Dockerfile @@ -135,7 +135,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/30/fpm-alpine/entrypoint.sh b/30/fpm-alpine/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/30/fpm-alpine/entrypoint.sh +++ b/30/fpm-alpine/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/30/fpm/Dockerfile b/30/fpm/Dockerfile index 85d0f477..102ae6d2 100644 --- a/30/fpm/Dockerfile +++ b/30/fpm/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/30/fpm/entrypoint.sh b/30/fpm/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/30/fpm/entrypoint.sh +++ b/30/fpm/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/31/apache/Dockerfile b/31/apache/Dockerfile index 96b8511c..98736153 100644 --- a/31/apache/Dockerfile +++ b/31/apache/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/31/apache/entrypoint.sh b/31/apache/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/31/apache/entrypoint.sh +++ b/31/apache/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/31/fpm-alpine/Dockerfile b/31/fpm-alpine/Dockerfile index ca69007f..802c4c18 100644 --- a/31/fpm-alpine/Dockerfile +++ b/31/fpm-alpine/Dockerfile @@ -135,7 +135,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/31/fpm-alpine/entrypoint.sh b/31/fpm-alpine/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/31/fpm-alpine/entrypoint.sh +++ b/31/fpm-alpine/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/31/fpm/Dockerfile b/31/fpm/Dockerfile index 68c7b75f..fe788fe9 100644 --- a/31/fpm/Dockerfile +++ b/31/fpm/Dockerfile @@ -140,7 +140,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/31/fpm/entrypoint.sh b/31/fpm/entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/31/fpm/entrypoint.sh +++ b/31/fpm/entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template index 2295bddf..d256d3da 100644 --- a/Dockerfile-alpine.template +++ b/Dockerfile-alpine.template @@ -134,7 +134,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index 8734caa9..c0bd4dd9 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -139,7 +139,8 @@ RUN { \ } > "${PHP_INI_DIR}/conf.d/nextcloud.ini"; \ \ mkdir /var/www/data; \ - mkdir -p /docker-entrypoint-hooks.d/pre-installation \ + mkdir -p /docker-entrypoint-hooks.d/pre-initialization \ + /docker-entrypoint-hooks.d/pre-installation \ /docker-entrypoint-hooks.d/post-installation \ /docker-entrypoint-hooks.d/pre-upgrade \ /docker-entrypoint-hooks.d/post-upgrade \ diff --git a/README.md b/README.md index 9f13f17c..f67f9ffc 100644 --- a/README.md +++ b/README.md @@ -362,8 +362,9 @@ As long as you have not modified any of the provided config files in `/var/www/h ## Auto configuration via hook folders -There are 5 hooks +There are 6 hooks +- `pre-initialization` Executed before the need to update or install Nextcloud is determined - `pre-installation` Executed before the Nextcloud is installed/initiated - `post-installation` Executed after the Nextcloud is installed/initiated - `pre-upgrade` Executed before the Nextcloud is upgraded @@ -383,6 +384,7 @@ To use the hooks triggered by the `entrypoint` script, either image: nextcloud:stable volumes: + - ./app-hooks/pre-initialization:/docker-entrypoint-hooks.d/pre-initialization - ./app-hooks/pre-installation:/docker-entrypoint-hooks.d/pre-installation - ./app-hooks/post-installation:/docker-entrypoint-hooks.d/post-installation - ./app-hooks/pre-upgrade:/docker-entrypoint-hooks.d/pre-upgrade diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 8e178f2e..118e9b73 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -141,6 +141,8 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP flock 9 fi + run_path pre-initialization + installed_version="0.0.0.0" if [ -f /var/www/html/version.php ]; then # shellcheck disable=SC2016 From d6b4877b36c743ba1b72c294e30f1cf7494aaf32 Mon Sep 17 00:00:00 2001 From: Stephan Brunner Date: Sun, 2 Mar 2025 09:31:13 +0100 Subject: [PATCH 2/4] Add ability to force reinitialization by putting a marker file in the tmp folder We have a custom image where we'd like to recopy all of nextcloud's source code again when we update some internal thing without a change in Nextcloud's version. The newly added pre-initialization hook can be used to determine this and force a rerun. Signed-off-by: Stephan Brunner --- 29/apache/entrypoint.sh | 17 ++++++++++++++++- 29/fpm-alpine/entrypoint.sh | 17 ++++++++++++++++- 29/fpm/entrypoint.sh | 17 ++++++++++++++++- 30/apache/entrypoint.sh | 17 ++++++++++++++++- 30/fpm-alpine/entrypoint.sh | 17 ++++++++++++++++- 30/fpm/entrypoint.sh | 17 ++++++++++++++++- 31/apache/entrypoint.sh | 17 ++++++++++++++++- 31/fpm-alpine/entrypoint.sh | 17 ++++++++++++++++- 31/fpm/entrypoint.sh | 17 ++++++++++++++++- README.md | 10 ++++++++++ docker-entrypoint.sh | 15 +++++++++++++++ 11 files changed, 169 insertions(+), 9 deletions(-) diff --git a/29/apache/entrypoint.sh b/29/apache/entrypoint.sh index 118e9b73..17b85355 100755 --- a/29/apache/entrypoint.sh +++ b/29/apache/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/29/fpm-alpine/entrypoint.sh b/29/fpm-alpine/entrypoint.sh index 118e9b73..17b85355 100755 --- a/29/fpm-alpine/entrypoint.sh +++ b/29/fpm-alpine/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/29/fpm/entrypoint.sh b/29/fpm/entrypoint.sh index 118e9b73..17b85355 100755 --- a/29/fpm/entrypoint.sh +++ b/29/fpm/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/30/apache/entrypoint.sh b/30/apache/entrypoint.sh index 118e9b73..17b85355 100755 --- a/30/apache/entrypoint.sh +++ b/30/apache/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/30/fpm-alpine/entrypoint.sh b/30/fpm-alpine/entrypoint.sh index 118e9b73..17b85355 100755 --- a/30/fpm-alpine/entrypoint.sh +++ b/30/fpm-alpine/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/30/fpm/entrypoint.sh b/30/fpm/entrypoint.sh index 118e9b73..17b85355 100755 --- a/30/fpm/entrypoint.sh +++ b/30/fpm/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/31/apache/entrypoint.sh b/31/apache/entrypoint.sh index 118e9b73..17b85355 100755 --- a/31/apache/entrypoint.sh +++ b/31/apache/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/31/fpm-alpine/entrypoint.sh b/31/fpm-alpine/entrypoint.sh index 118e9b73..17b85355 100755 --- a/31/fpm-alpine/entrypoint.sh +++ b/31/fpm-alpine/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/31/fpm/entrypoint.sh b/31/fpm/entrypoint.sh index 118e9b73..17b85355 100755 --- a/31/fpm/entrypoint.sh +++ b/31/fpm/entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -248,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi diff --git a/README.md b/README.md index f67f9ffc..7fcc3ef1 100644 --- a/README.md +++ b/README.md @@ -393,6 +393,16 @@ To use the hooks triggered by the `entrypoint` script, either ... ``` +## Forcing an upgrade run + +Sometimes you need to force an explicit upgrade run even when the bundled Nextcloud version did not change. +An example would be when you have custom apps bundled and you want to update those. + +To do this, you can simply create a file `/tmp/nextcloud-force-initialization` before the need for an upgrade is determined. +The content is irrelevant. +You can either create this file before starting the container, or you can use the `pre-initialization` hook to create it. +After the update has successfully run, the file is removed automatically. + # Running this image with `docker compose` The easiest way to get a fully featured and functional setup is using a `compose.yaml` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for. diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 118e9b73..b68a96b8 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -156,7 +156,18 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP exit 1 fi + need_initialization=false + if version_greater "$image_version" "$installed_version"; then + need_initialization=true + fi + + if [ -f /tmp/nextcloud-force-initialization ]; then + echo Found /tmp/nextcloud-force-initialization, forcing initialization + need_initialization=true + fi + + if [ "true" = "$need_initialization" ]; then echo "Initializing nextcloud $image_version ..." if [ "$installed_version" != "0.0.0.0" ]; then if [ "${image_version%%.*}" -gt "$((${installed_version%%.*} + 1))" ]; then @@ -269,6 +280,10 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP run_path post-upgrade fi + if [ -f /tmp/nextcloud-force-initialization ]; then + rm /tmp/nextcloud-force-initialization + fi + echo "Initializing finished" fi From 4df45e7ac3d2f0de7736dd7908a48792b4b9e085 Mon Sep 17 00:00:00 2001 From: Stephan Brunner Date: Sun, 2 Mar 2025 09:39:34 +0100 Subject: [PATCH 3/4] Replace tab vs spaces to align code style Signed-off-by: Stephan Brunner --- docker-entrypoint.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index b68a96b8..17b85355 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -259,7 +259,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi run_path post-installation - fi + fi fi # not enough specified to do a fully automated installation if [ "$install" = false ]; then From 614be2855049e3175d4fdd4cc84cf152382cdb95 Mon Sep 17 00:00:00 2001 From: Kaloyan Nikolov Date: Fri, 18 Apr 2025 18:42:58 +0300 Subject: [PATCH 4/4] Updated examples (#2405) * Updated examples Signed-off-by: Kaloyan Nikolov * Lock examples to PostgreSQL 16 Signed-off-by: Kaloyan Nikolov * Pin postgresql to 16 in Readme example Signed-off-by: Kaloyan Nikolov * Update .examples/docker-compose/insecure/mariadb/apache/compose.yaml Co-authored-by: J0WI Signed-off-by: Kaloyan Nikolov * Update .examples/docker-compose/insecure/postgres/apache/compose.yaml Co-authored-by: J0WI Signed-off-by: Kaloyan Nikolov * Update .examples/docker-compose/insecure/mariadb/fpm/compose.yaml Co-authored-by: J0WI Signed-off-by: Kaloyan Nikolov * Moved some comments on new lines. Signed-off-by: Kaloyan Nikolov * Moved another comment to new line Signed-off-by: Kaloyan Nikolov * Unified across files / updated README file. Signed-off-by: Kaloyan Nikolov * Use canonical links to external services. Signed-off-by: Kaloyan Nikolov --------- Signed-off-by: Kaloyan Nikolov Co-authored-by: J0WI --- .../insecure/mariadb/apache/compose.yaml | 7 ++++- .../insecure/mariadb/fpm/compose.yaml | 15 ++++++++-- .../insecure/mariadb/fpm/web/Dockerfile | 3 -- .../insecure/postgres/apache/compose.yaml | 5 ++++ .../insecure/postgres/fpm/compose.yaml | 13 ++++++-- .../insecure/postgres/fpm/web/Dockerfile | 3 -- .../mariadb/apache/compose.yaml | 17 +++++++---- .../mariadb/apache/proxy/Dockerfile | 2 +- .../with-nginx-proxy/mariadb/fpm/compose.yaml | 22 +++++++++++--- .../mariadb/fpm/proxy/Dockerfile | 2 +- .../mariadb/fpm/web/Dockerfile | 3 -- .../postgres/apache/compose.yaml | 12 +++++++- .../postgres/apache/proxy/Dockerfile | 2 +- .../postgres/fpm/compose.yaml | 22 ++++++++++---- .../postgres/fpm/proxy/Dockerfile | 2 +- .../postgres/fpm/web/Dockerfile | 3 -- README.md | 30 +++++++++++++++---- 17 files changed, 120 insertions(+), 43 deletions(-) delete mode 100644 .examples/docker-compose/insecure/mariadb/fpm/web/Dockerfile delete mode 100644 .examples/docker-compose/insecure/postgres/fpm/web/Dockerfile delete mode 100644 .examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/Dockerfile delete mode 100644 .examples/docker-compose/with-nginx-proxy/postgres/fpm/web/Dockerfile diff --git a/.examples/docker-compose/insecure/mariadb/apache/compose.yaml b/.examples/docker-compose/insecure/mariadb/apache/compose.yaml index c765190c..c05d7d8e 100644 --- a/.examples/docker-compose/insecure/mariadb/apache/compose.yaml +++ b/.examples/docker-compose/insecure/mariadb/apache/compose.yaml @@ -1,6 +1,9 @@ services: + # Note: MariaDB is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts command: --transaction-isolation=READ-COMMITTED restart: always volumes: @@ -12,6 +15,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always diff --git a/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml b/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml index 90520e08..64faef6c 100644 --- a/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml +++ b/.examples/docker-compose/insecure/mariadb/fpm/compose.yaml @@ -1,6 +1,9 @@ services: + # Note: MariaDB is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts command: --transaction-isolation=READ-COMMITTED restart: always volumes: @@ -12,6 +15,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -31,14 +36,18 @@ services: - db - redis + # Note: Nginx is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/nginx/ web: - build: ./web + image: nginx:alpine-slim restart: always ports: - 127.0.0.1:8080:80 volumes: + # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + - ./web/nginx.conf:/etc/nginx/nginx.conf:ro + # NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing) - nextcloud:/var/www/html:z,ro - # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) depends_on: - app diff --git a/.examples/docker-compose/insecure/mariadb/fpm/web/Dockerfile b/.examples/docker-compose/insecure/mariadb/fpm/web/Dockerfile deleted file mode 100644 index 9e620aff..00000000 --- a/.examples/docker-compose/insecure/mariadb/fpm/web/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM nginx:alpine - -COPY nginx.conf /etc/nginx/nginx.conf diff --git a/.examples/docker-compose/insecure/postgres/apache/compose.yaml b/.examples/docker-compose/insecure/postgres/apache/compose.yaml index 19c75ba4..8ae34013 100644 --- a/.examples/docker-compose/insecure/postgres/apache/compose.yaml +++ b/.examples/docker-compose/insecure/postgres/apache/compose.yaml @@ -1,5 +1,8 @@ services: + # Note: PostgreSQL is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/postgres db: + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server image: postgres:alpine restart: always volumes: @@ -7,6 +10,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always diff --git a/.examples/docker-compose/insecure/postgres/fpm/compose.yaml b/.examples/docker-compose/insecure/postgres/fpm/compose.yaml index 4e268cab..8a88afd4 100644 --- a/.examples/docker-compose/insecure/postgres/fpm/compose.yaml +++ b/.examples/docker-compose/insecure/postgres/fpm/compose.yaml @@ -1,5 +1,8 @@ services: + # Note: PostgreSQL is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/postgres db: + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server image: postgres:alpine restart: always volumes: @@ -7,6 +10,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -26,14 +31,18 @@ services: - db - redis + # Note: Nginx is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/nginx/ web: - build: ./web + image: nginx:alpine-slim restart: always ports: - 127.0.0.1:8080:80 volumes: + # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + - ./web/nginx.conf:/etc/nginx/nginx.conf:ro + # NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing) - nextcloud:/var/www/html:z,ro - # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) depends_on: - app diff --git a/.examples/docker-compose/insecure/postgres/fpm/web/Dockerfile b/.examples/docker-compose/insecure/postgres/fpm/web/Dockerfile deleted file mode 100644 index 9e620aff..00000000 --- a/.examples/docker-compose/insecure/postgres/fpm/web/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM nginx:alpine - -COPY nginx.conf /etc/nginx/nginx.conf diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml index e1a461d2..e1132818 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/compose.yaml @@ -1,6 +1,9 @@ services: + # Note: MariaDB is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts command: --transaction-isolation=READ-COMMITTED restart: always volumes: @@ -12,6 +15,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -33,9 +38,6 @@ services: depends_on: - db - redis - # Added proxy container dependency below. - # It is unclear on when or why it happens, but sometimes NC manages to start before the proxy - # and it breaks for whatever weird reason resulting in the need of manual proxy container restart. - proxy networks: - proxy-tier @@ -52,6 +54,9 @@ services: - db - redis + # Note: Nginx-proxy is an external service. You can find more information about the configuration here: + # Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences. + # https://hub.docker.com/r/nginxproxy/nginx-proxy proxy: build: ./proxy restart: always @@ -69,6 +74,8 @@ services: networks: - proxy-tier + # Note: Letsencrypt companion is an external service. You can find more information about the configuration here: + # https://hub.docker.com/r/nginxproxy/acme-companion letsencrypt-companion: image: nginxproxy/acme-companion restart: always @@ -85,7 +92,7 @@ services: depends_on: - proxy -# self signed +# self signed,outdated # omgwtfssl: # image: paulczar/omgwtfssl # restart: "no" diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/Dockerfile b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/Dockerfile index 46fc7e26..6f449c7f 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/Dockerfile +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/Dockerfile @@ -1,3 +1,3 @@ -FROM nginxproxy/nginx-proxy:alpine +FROM nginxproxy/nginx-proxy:1.7-alpine COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml index fa77198a..13d4a40b 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/compose.yaml @@ -1,6 +1,9 @@ services: + # Note: MariaDB is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts command: --transaction-isolation=READ-COMMITTED restart: always volumes: @@ -12,6 +15,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -32,12 +37,16 @@ services: - redis - proxy + # Note: Nginx is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/nginx/ web: - build: ./web + image: nginx:alpine-slim restart: always volumes: + # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + - ./web/nginx.conf:/etc/nginx/nginx.conf:ro + # NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing) - nextcloud:/var/www/html:z,ro - # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -59,6 +68,9 @@ services: - db - redis + # Note: Nginx-proxy is an external service. You can find more information about the configuration here: + # Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences. + # https://hub.docker.com/r/nginxproxy/nginx-proxy proxy: build: ./proxy restart: always @@ -75,6 +87,8 @@ services: networks: - proxy-tier + # Note: Letsencrypt companion is an external service. You can find more information about the configuration here: + # https://hub.docker.com/r/nginxproxy/acme-companion letsencrypt-companion: image: nginxproxy/acme-companion restart: always @@ -91,7 +105,7 @@ services: depends_on: - proxy -# self signed +# self signed, outdated. # omgwtfssl: # image: paulczar/omgwtfssl # restart: "no" diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/Dockerfile b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/Dockerfile index 46fc7e26..6f449c7f 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/Dockerfile +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/Dockerfile @@ -1,3 +1,3 @@ -FROM nginxproxy/nginx-proxy:alpine +FROM nginxproxy/nginx-proxy:1.7-alpine COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/Dockerfile b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/Dockerfile deleted file mode 100644 index 9e620aff..00000000 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM nginx:alpine - -COPY nginx.conf /etc/nginx/nginx.conf diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml b/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml index 2eb4f638..035359f0 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/compose.yaml @@ -1,5 +1,8 @@ services: + # Note: PostgreSQL is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/postgres db: + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server image: postgres:alpine restart: always volumes: @@ -7,6 +10,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -44,6 +49,9 @@ services: - db - redis + # Note: Nginx-proxy is an external service. You can find more information about the configuration here: + # Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences. + # https://hub.docker.com/r/nginxproxy/nginx-proxy proxy: build: ./proxy restart: always @@ -60,6 +68,8 @@ services: networks: - proxy-tier + # Note: Letsencrypt companion is an external service. You can find more information about the configuration here: + # https://hub.docker.com/r/nginxproxy/acme-companion letsencrypt-companion: image: nginxproxy/acme-companion restart: always @@ -74,7 +84,7 @@ services: depends_on: - proxy -# self signed +# self signed, outdated # omgwtfssl: # image: paulczar/omgwtfssl # restart: "no" diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/Dockerfile b/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/Dockerfile index 46fc7e26..6f449c7f 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/Dockerfile +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/Dockerfile @@ -1,3 +1,3 @@ -FROM nginxproxy/nginx-proxy:alpine +FROM nginxproxy/nginx-proxy:1.7-alpine COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml index 80be65a6..78654edd 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/compose.yaml @@ -1,7 +1,8 @@ -version: '3' - services: + # Note: PostgreSQL is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/postgres db: + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server image: postgres:alpine restart: always volumes: @@ -9,6 +10,8 @@ services: env_file: - db.env + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -29,12 +32,16 @@ services: - redis - proxy + # Note: Nginx is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/nginx/ web: - build: ./web + image: nginx:alpine-slim restart: always volumes: + # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + - ./web/nginx.conf:/etc/nginx/nginx.conf:ro + # NOTE: The `volumes` included below should match those of the `app` container (unless you know what you're doing) - nextcloud:/var/www/html:z,ro - # NOTE: The `volumes` included here should match those of the `app` container (unless you know what you're doing) environment: - VIRTUAL_HOST= - LETSENCRYPT_HOST= @@ -56,6 +63,9 @@ services: - db - redis + # Note: Nginx-proxy is an external service. You can find more information about the configuration here: + # Warning: Do not use :latest tags of nginx-proxy unless absolutely sure about the consequences. + # https://hub.docker.com/r/nginxproxy/nginx-proxy proxy: build: ./proxy restart: always @@ -72,6 +82,8 @@ services: networks: - proxy-tier + # Note: Letsencrypt companion is an external service. You can find more information about the configuration here: + # https://hub.docker.com/r/nginxproxy/acme-companion letsencrypt-companion: image: nginxproxy/acme-companion restart: always @@ -88,7 +100,7 @@ services: depends_on: - proxy -# self signed +# self signed, outdated # omgwtfssl: # image: paulczar/omgwtfssl # restart: "no" diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/Dockerfile b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/Dockerfile index 46fc7e26..6f449c7f 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/Dockerfile +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/Dockerfile @@ -1,3 +1,3 @@ -FROM nginxproxy/nginx-proxy:alpine +FROM nginxproxy/nginx-proxy:1.7-alpine COPY uploadsize.conf /etc/nginx/conf.d/uploadsize.conf diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/Dockerfile b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/Dockerfile deleted file mode 100644 index 9e620aff..00000000 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/Dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM nginx:alpine - -COPY nginx.conf /etc/nginx/nginx.conf diff --git a/README.md b/README.md index 7de62124..3be70217 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ Database: ```console $ docker run -d \ -v db:/var/lib/mysql \ -mariadb:10.11 +mariadb:lts ``` ### Additional volumes @@ -403,8 +403,11 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia ```yaml services: + # Note: MariaDB is external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts restart: always command: --transaction-isolation=READ-COMMITTED volumes: @@ -415,6 +418,8 @@ services: - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -451,8 +456,11 @@ Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` varia ```yaml services: + # Note: MariaDB is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/mariadb db: - image: mariadb:10.11 + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: mariadb:lts restart: always command: --transaction-isolation=READ-COMMITTED volumes: @@ -463,6 +471,8 @@ services: - MYSQL_DATABASE=nextcloud - MYSQL_USER=nextcloud + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always @@ -481,15 +491,18 @@ services: - MYSQL_USER=nextcloud - MYSQL_HOST=db + # Note: Nginx is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/nginx/ web: - image: nginx + image: nginx:alpine-slim restart: always ports: - 8080:80 depends_on: - app volumes: - - ./nginx.conf:/etc/nginx/nginx.conf:ro + # https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html + - ./nginx.conf:/etc/nginx/nginx.conf:ro volumes_from: - app @@ -514,8 +527,11 @@ Example: ```yaml services: + # Note: PostgreSQL is external service. You can find more information about the configuration here: + # https://hub.docker.com/_/postgres db: - image: postgres + # Note: Check the recommend version here: https://docs.nextcloud.com/server/latest/admin_manual/installation/system_requirements.html#server + image: postgres:alpine restart: always volumes: - db:/var/lib/postgresql/data @@ -527,6 +543,8 @@ services: - postgres_db - postgres_password - postgres_user + # Note: Redis is an external service. You can find more information about the configuration here: + # https://hub.docker.com/_/redis redis: image: redis:alpine restart: always