From 6eb8f3fa16f9dfcfed685d7aeed0fd5a1b2078b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Br=C3=BCckner?= Date: Tue, 2 Oct 2018 10:45:00 +0200 Subject: [PATCH] added retry loop and decreased sleep time --- 12.0/apache/entrypoint.sh | 27 +++++++++++++++++++-------- 12.0/fpm-alpine/entrypoint.sh | 27 +++++++++++++++++++-------- 12.0/fpm/entrypoint.sh | 27 +++++++++++++++++++-------- 13.0/apache/entrypoint.sh | 27 +++++++++++++++++++-------- 13.0/fpm-alpine/entrypoint.sh | 27 +++++++++++++++++++-------- 13.0/fpm/entrypoint.sh | 27 +++++++++++++++++++-------- 14.0/apache/entrypoint.sh | 27 +++++++++++++++++++-------- 14.0/fpm-alpine/entrypoint.sh | 27 +++++++++++++++++++-------- 14.0/fpm/entrypoint.sh | 27 +++++++++++++++++++-------- docker-entrypoint.sh | 27 +++++++++++++++++++-------- 10 files changed, 190 insertions(+), 80 deletions(-) diff --git a/12.0/apache/entrypoint.sh b/12.0/apache/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/12.0/apache/entrypoint.sh +++ b/12.0/apache/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/12.0/fpm-alpine/entrypoint.sh b/12.0/fpm-alpine/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/12.0/fpm-alpine/entrypoint.sh +++ b/12.0/fpm-alpine/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/12.0/fpm/entrypoint.sh b/12.0/fpm/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/12.0/fpm/entrypoint.sh +++ b/12.0/fpm/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/13.0/apache/entrypoint.sh b/13.0/apache/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/13.0/apache/entrypoint.sh +++ b/13.0/apache/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/13.0/fpm-alpine/entrypoint.sh b/13.0/fpm-alpine/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/13.0/fpm-alpine/entrypoint.sh +++ b/13.0/fpm-alpine/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/13.0/fpm/entrypoint.sh b/13.0/fpm/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/13.0/fpm/entrypoint.sh +++ b/13.0/fpm/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/14.0/apache/entrypoint.sh b/14.0/apache/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/14.0/apache/entrypoint.sh +++ b/14.0/apache/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/14.0/fpm-alpine/entrypoint.sh b/14.0/fpm-alpine/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/14.0/fpm-alpine/entrypoint.sh +++ b/14.0/fpm-alpine/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/14.0/fpm/entrypoint.sh b/14.0/fpm/entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/14.0/fpm/entrypoint.sh +++ b/14.0/fpm/entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index c31db1a1..6cfd5666 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -71,27 +71,38 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ]; then install_options=$install_options' --data-dir "$NEXTCLOUD_DATA_DIR"' fi + install=false if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${MYSQL_DATABASE+x}" ] && [ -n "${MYSQL_USER+x}" ] && [ -n "${MYSQL_PASSWORD+x}" ] && [ -n "${MYSQL_HOST+x}" ]; then echo "Installing with MySQL database" # shellcheck disable=SC2016 install_options=$install_options' --database mysql --database-name "$MYSQL_DATABASE" --database-user "$MYSQL_USER" --database-pass "$MYSQL_PASSWORD" --database-host "$MYSQL_HOST"' - echo "waiting 30s for the database to setup" - sleep 30s - echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + install=true elif [ -n "${POSTGRES_DB+x}" ] && [ -n "${POSTGRES_USER+x}" ] && [ -n "${POSTGRES_PASSWORD+x}" ] && [ -n "${POSTGRES_HOST+x}" ]; then echo "Installing with PostgreSQL database" # shellcheck disable=SC2016 install_options=$install_options' --database pgsql --database-name "$POSTGRES_DB" --database-user "$POSTGRES_USER" --database-pass "$POSTGRES_PASSWORD" --database-host "$POSTGRES_HOST"' - echo "waiting 10s for the database to setup" - sleep 10s + install=true + fi + + if [ "$install" = true ]; then echo "starting nexcloud installation" - run_as "php /var/www/html/occ maintenance:install $install_options" + max_retries=10 + try=0 + until run_as "php /var/www/html/occ maintenance:install $install_options" || [ "$try" -gt "$max_retries" ] + do + echo "retrying install..." + try=$((try+1)) + sleep 3s + done + if [ "$try" -gt "$max_retries" ]; then + echo "installing of nextcloud failed!" + exit 1 + fi else echo "running web-based installer on first connect!" fi