diff --git a/.config/autoconfig.php b/.config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/.config/autoconfig.php +++ b/.config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/.examples/docker-compose/insecure/mariadb-cron-redis/fpm/web/nginx.conf b/.examples/docker-compose/insecure/mariadb-cron-redis/fpm/web/nginx.conf index 858674ad..b5cffcb5 100644 --- a/.examples/docker-compose/insecure/mariadb-cron-redis/fpm/web/nginx.conf +++ b/.examples/docker-compose/insecure/mariadb-cron-redis/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/insecure/mariadb/fpm/web/nginx.conf b/.examples/docker-compose/insecure/mariadb/fpm/web/nginx.conf index 858674ad..b5cffcb5 100644 --- a/.examples/docker-compose/insecure/mariadb/fpm/web/nginx.conf +++ b/.examples/docker-compose/insecure/mariadb/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/insecure/postgres/apache/db.env b/.examples/docker-compose/insecure/postgres/apache/db.env index 41106cab..dd2a4610 100644 --- a/.examples/docker-compose/insecure/postgres/apache/db.env +++ b/.examples/docker-compose/insecure/postgres/apache/db.env @@ -1,3 +1,2 @@ POSTGRES_PASSWORD= -POSTGRES_DB=nextcloud -POSTGRES_USER=nextcloud +POSTGRES_USER=postgres diff --git a/.examples/docker-compose/insecure/postgres/apache/docker-compose.yml b/.examples/docker-compose/insecure/postgres/apache/docker-compose.yml index 596568d6..159a17b1 100644 --- a/.examples/docker-compose/insecure/postgres/apache/docker-compose.yml +++ b/.examples/docker-compose/insecure/postgres/apache/docker-compose.yml @@ -18,6 +18,7 @@ services: - nextcloud:/var/www/html environment: - POSTGRES_HOST=db + - POSTGRES_DB=nextcloud env_file: - db.env depends_on: diff --git a/.examples/docker-compose/insecure/postgres/fpm/db.env b/.examples/docker-compose/insecure/postgres/fpm/db.env index 41106cab..dd2a4610 100644 --- a/.examples/docker-compose/insecure/postgres/fpm/db.env +++ b/.examples/docker-compose/insecure/postgres/fpm/db.env @@ -1,3 +1,2 @@ POSTGRES_PASSWORD= -POSTGRES_DB=nextcloud -POSTGRES_USER=nextcloud +POSTGRES_USER=postgres diff --git a/.examples/docker-compose/insecure/postgres/fpm/docker-compose.yml b/.examples/docker-compose/insecure/postgres/fpm/docker-compose.yml index b1ff459c..113cf66d 100644 --- a/.examples/docker-compose/insecure/postgres/fpm/docker-compose.yml +++ b/.examples/docker-compose/insecure/postgres/fpm/docker-compose.yml @@ -16,6 +16,7 @@ services: - nextcloud:/var/www/html environment: - POSTGRES_HOST=db + - POSTGRES_DB=nextcloud env_file: - db.env depends_on: diff --git a/.examples/docker-compose/insecure/postgres/fpm/web/nginx.conf b/.examples/docker-compose/insecure/postgres/fpm/web/nginx.conf index 858674ad..b5cffcb5 100644 --- a/.examples/docker-compose/insecure/postgres/fpm/web/nginx.conf +++ b/.examples/docker-compose/insecure/postgres/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/web/nginx.conf b/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/web/nginx.conf index eca9db99..6cb34792 100644 --- a/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/web/nginx.conf +++ b/.examples/docker-compose/with-nginx-proxy-self-signed-ssl/mariadb/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/apache/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/apache/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/apache/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/apache/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/web/nginx.conf b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/web/nginx.conf index eca9db99..6cb34792 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/web/nginx.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb-cron-redis/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/apache/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf index eca9db99..6cb34792 100644 --- a/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf +++ b/.examples/docker-compose/with-nginx-proxy/mariadb/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/db.env b/.examples/docker-compose/with-nginx-proxy/postgres/apache/db.env index 41106cab..dd2a4610 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/db.env +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/db.env @@ -1,3 +1,2 @@ POSTGRES_PASSWORD= -POSTGRES_DB=nextcloud -POSTGRES_USER=nextcloud +POSTGRES_USER=postgres diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml b/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml index 2e40e8d7..78e34d91 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/docker-compose.yml @@ -19,6 +19,7 @@ services: - LETSENCRYPT_HOST= - LETSENCRYPT_EMAIL= - POSTGRES_HOST=db + - POSTGRES_DB=nextcloud env_file: - db.env depends_on: diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/postgres/apache/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/db.env b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/db.env index 41106cab..dd2a4610 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/db.env +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/db.env @@ -1,3 +1,2 @@ POSTGRES_PASSWORD= -POSTGRES_DB=nextcloud -POSTGRES_USER=nextcloud +POSTGRES_USER=postgres diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/docker-compose.yml b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/docker-compose.yml index 39e85f71..371494ae 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/docker-compose.yml +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/docker-compose.yml @@ -16,6 +16,7 @@ services: - nextcloud:/var/www/html environment: - POSTGRES_HOST=db + - POSTGRES_DB=nextcloud env_file: - db.env depends_on: diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/uploadsize.conf b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/uploadsize.conf index c636de7d..7e3906ec 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/uploadsize.conf +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/proxy/uploadsize.conf @@ -1 +1,2 @@ client_max_body_size 10G; +proxy_request_buffering off; diff --git a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/nginx.conf b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/nginx.conf index eca9db99..6cb34792 100644 --- a/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/nginx.conf +++ b/.examples/docker-compose/with-nginx-proxy/postgres/fpm/web/nginx.conf @@ -1,4 +1,4 @@ -worker_processes 1; +worker_processes auto; error_log /var/log/nginx/error.log warn; pid /var/run/nginx.pid; diff --git a/.travis.yml b/.travis.yml index 84d805c3..a20d2f1f 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,6 +5,11 @@ branches: only: - master +# preload images to avoid timeouts in tests +before_install: + - docker pull mariadb:10 + - docker pull postgres:11-alpine + install: - git clone https://github.com/docker-library/official-images.git ~/official-images @@ -19,8 +24,8 @@ script: ( set -Eeuo pipefail set -x - docker build -t "$image" "${VERSION}/${VARIANT}" - ~/official-images/test/run.sh "$image" + travis_retry docker build -t "$image" "${VERSION}/${VARIANT}" + travis_retry ~/official-images/test/run.sh "$image" .travis/test-example-dockerfiles.sh "$image" ) @@ -28,6 +33,12 @@ after_script: - docker images jobs: + # https://github.com/docker-library/php/issues/822 + allow_failures: + - env: VERSION=15.0 VARIANT=apache ARCH=i386 + - env: VERSION=16.0 VARIANT=apache ARCH=i386 + - env: VERSION=15.0-rc VARIANT=apache ARCH=i386 + - env: VERSION=16.0-rc VARIANT=apache ARCH=i386 include: - &test-scripts stage: test scripts @@ -37,7 +48,7 @@ jobs: before_script: skip script: - hash_before=$(git write-tree) - - ./update.sh + - travis_retry ./update.sh - bash -c "[[ $hash_before = $(git add -A && git write-tree) ]]" after_script: skip @@ -47,10 +58,16 @@ jobs: - wget -O "$HOME/bin/bashbrew" https://doi-janky.infosiftr.net/job/bashbrew/lastSuccessfulBuild/artifact/bin/bashbrew-amd64 - chmod +x "$HOME/bin/bashbrew" script: - - ./generate-stackbrew-library.sh + - travis_retry ./generate-stackbrew-library.sh - stage: test images - env: VERSION=14.0 VARIANT=fpm-alpine ARCH=amd64 + env: VERSION=14.0-rc VARIANT=fpm-alpine ARCH=amd64 + - env: VERSION=14.0-rc VARIANT=fpm-alpine ARCH=i386 + - env: VERSION=14.0-rc VARIANT=fpm ARCH=amd64 + - env: VERSION=14.0-rc VARIANT=fpm ARCH=i386 + - env: VERSION=14.0-rc VARIANT=apache ARCH=amd64 + - env: VERSION=14.0-rc VARIANT=apache ARCH=i386 + - env: VERSION=14.0 VARIANT=fpm-alpine ARCH=amd64 - env: VERSION=14.0 VARIANT=fpm-alpine ARCH=i386 - env: VERSION=14.0 VARIANT=fpm ARCH=amd64 - env: VERSION=14.0 VARIANT=fpm ARCH=i386 diff --git a/14.0-rc/apache/Dockerfile b/14.0-rc/apache/Dockerfile new file mode 100644 index 00000000..b462a4e5 --- /dev/null +++ b/14.0-rc/apache/Dockerfile @@ -0,0 +1,146 @@ +# DO NOT EDIT: created by update.sh from Dockerfile-debian.template +FROM php:7.2-apache-stretch + +# entrypoint.sh and cron.sh dependencies +RUN set -ex; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + rsync \ + bzip2 \ + busybox-static \ + ; \ + rm -rf /var/lib/apt/lists/*; \ + \ + mkdir -p /var/spool/cron/crontabs; \ + echo '*/15 * * * * php -f /var/www/html/cron.php' > /var/spool/cron/crontabs/www-data + +# install the PHP extensions we need +# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html +RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libcurl4-openssl-dev \ + libevent-dev \ + libfreetype6-dev \ + libicu-dev \ + libjpeg-dev \ + libldap2-dev \ + libmcrypt-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libxml2-dev \ + libmagickwand-dev \ + libwebp-dev \ + ; \ + \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ + docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ + docker-php-ext-install -j "$(nproc)" \ + exif \ + gd \ + intl \ + ldap \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + zip \ + ; \ + \ +# pecl will claim success even if one install fails, so we need to perform each install separately + pecl install APCu-5.1.17; \ + pecl install memcached-3.1.3; \ + pecl install redis-4.3.0; \ + pecl install imagick-3.4.4; \ + \ + docker-php-ext-enable \ + apcu \ + memcached \ + redis \ + imagick \ + ; \ + \ +# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +# set recommended PHP.ini settings +# see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache +RUN { \ + echo 'opcache.enable=1'; \ + echo 'opcache.interned_strings_buffer=8'; \ + echo 'opcache.max_accelerated_files=10000'; \ + echo 'opcache.memory_consumption=128'; \ + echo 'opcache.save_comments=1'; \ + echo 'opcache.revalidate_freq=1'; \ + } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + \ + echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + \ + echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini; \ + \ + mkdir /var/www/data; \ + chown -R www-data:root /var/www; \ + chmod -R g=u /var/www + +VOLUME /var/www/html + +RUN a2enmod rewrite remoteip ;\ + {\ + echo RemoteIPHeader X-Real-IP ;\ + echo RemoteIPTrustedProxy 10.0.0.0/8 ;\ + echo RemoteIPTrustedProxy 172.16.0.0/12 ;\ + echo RemoteIPTrustedProxy 192.168.0.0/16 ;\ + } > /etc/apache2/conf-available/remoteip.conf;\ + a2enconf remoteip + +ENV NEXTCLOUD_VERSION 14.0.13RC1 + +RUN set -ex; \ + fetchDeps=" \ + gnupg \ + dirmngr \ + "; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + \ + curl -fsSL -o nextcloud.tar.bz2 \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + curl -fsSL -o nextcloud.tar.bz2.asc \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ +# gpg key from https://nextcloud.com/nextcloud.asc + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ + gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + rm -rf /usr/src/nextcloud/updater; \ + mkdir -p /usr/src/nextcloud/data; \ + mkdir -p /usr/src/nextcloud/custom_apps; \ + chmod +x /usr/src/nextcloud/occ; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ + rm -rf /var/lib/apt/lists/* + +COPY *.sh upgrade.exclude / +COPY config/* /usr/src/nextcloud/config/ + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["apache2-foreground"] diff --git a/14.0-rc/apache/config/apache-pretty-urls.config.php b/14.0-rc/apache/config/apache-pretty-urls.config.php new file mode 100644 index 00000000..72da1d8c --- /dev/null +++ b/14.0-rc/apache/config/apache-pretty-urls.config.php @@ -0,0 +1,4 @@ + '/', +); diff --git a/14.0-rc/apache/config/apcu.config.php b/14.0-rc/apache/config/apcu.config.php new file mode 100644 index 00000000..69fed876 --- /dev/null +++ b/14.0-rc/apache/config/apcu.config.php @@ -0,0 +1,4 @@ + '\OC\Memcache\APCu', +); diff --git a/14.0-rc/apache/config/apps.config.php b/14.0-rc/apache/config/apps.config.php new file mode 100644 index 00000000..a4bed833 --- /dev/null +++ b/14.0-rc/apache/config/apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + "path" => OC::$SERVERROOT."/apps", + "url" => "/apps", + "writable" => false, + ), + 1 => array ( + "path" => OC::$SERVERROOT."/custom_apps", + "url" => "/custom_apps", + "writable" => true, + ), + ), +); diff --git a/14.0-rc/apache/config/autoconfig.php b/14.0-rc/apache/config/autoconfig.php new file mode 100644 index 00000000..deeabe4e --- /dev/null +++ b/14.0-rc/apache/config/autoconfig.php @@ -0,0 +1,31 @@ + '\OC\Memcache\Redis', + 'memcache.locking' => '\OC\Memcache\Redis', + 'redis' => array( + 'host' => getenv('REDIS_HOST'), + 'port' => getenv('REDIS_HOST_PORT') ?: 6379, + ), + ); +} + diff --git a/14.0-rc/apache/config/smtp.config.php b/14.0-rc/apache/config/smtp.config.php new file mode 100644 index 00000000..59f1eaa1 --- /dev/null +++ b/14.0-rc/apache/config/smtp.config.php @@ -0,0 +1,15 @@ + 'smtp', + 'mail_smtphost' => getenv('SMTP_HOST'), + 'mail_smtpport' => getenv('SMTP_PORT') ?: (getenv('SMTP_SECURE') ? 465 : 25), + 'mail_smtpsecure' => getenv('SMTP_SECURE') ?: '', + 'mail_smtpauth' => getenv('SMTP_NAME') && getenv('SMTP_PASSWORD'), + 'mail_smtpauthtype' => getenv('SMTP_AUTHTYPE') ?: 'LOGIN', + 'mail_smtpname' => getenv('SMTP_NAME') ?: '', + 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', + 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), + 'mail_domain' => getenv('MAIL_DOMAIN'), + ); +} diff --git a/14.0-rc/apache/cron.sh b/14.0-rc/apache/cron.sh new file mode 100755 index 00000000..4dfa4118 --- /dev/null +++ b/14.0-rc/apache/cron.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +exec busybox crond -f -l 0 -L /dev/stdout diff --git a/14.0-rc/apache/entrypoint.sh b/14.0-rc/apache/entrypoint.sh new file mode 100755 index 00000000..0be9d287 --- /dev/null +++ b/14.0-rc/apache/entrypoint.sh @@ -0,0 +1,140 @@ +#!/bin/sh +set -eu + +# version_greater A B returns whether A > B +version_greater() { + [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] +} + +# return true if specified directory is empty +directory_empty() { + [ -z "$(ls -A "$1/")" ] +} + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + installed_version="0.0.0.0" + if [ -f /var/www/html/version.php ]; then + # shellcheck disable=SC2016 + installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" + fi + # shellcheck disable=SC2016 + image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + + if version_greater "$installed_version" "$image_version"; then + echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" + exit 1 + fi + + if version_greater "$image_version" "$installed_version"; then + echo "Initializing nextcloud $image_version ..." + if [ "$installed_version" != "0.0.0.0" ]; then + echo "Upgrading nextcloud from $installed_version ..." + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before + fi + if [ "$(id -u)" = 0 ]; then + rsync_options="-rlDog --chown www-data:root" + else + rsync_options="-rlD" + fi + rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ + + for dir in config data custom_apps themes; do + if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then + rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + fi + done + rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + echo "Initializing finished" + + #install + if [ "$installed_version" = "0.0.0.0" ]; then + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + 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"' + 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"' + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + 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 + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + 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" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + #upgrade + else + run_as 'php /var/www/html/occ upgrade' + + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after + echo "The following apps have been disabled:" + diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 + rm -f /tmp/list_before /tmp/list_after + + fi + fi +fi + +exec "$@" diff --git a/14.0-rc/apache/upgrade.exclude b/14.0-rc/apache/upgrade.exclude new file mode 100644 index 00000000..354864da --- /dev/null +++ b/14.0-rc/apache/upgrade.exclude @@ -0,0 +1,5 @@ +/config/ +/data/ +/custom_apps/ +/themes/ +/version.php diff --git a/14.0-rc/fpm-alpine/Dockerfile b/14.0-rc/fpm-alpine/Dockerfile new file mode 100644 index 00000000..8430259a --- /dev/null +++ b/14.0-rc/fpm-alpine/Dockerfile @@ -0,0 +1,123 @@ +# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template +FROM php:7.2-fpm-alpine3.10 + +# entrypoint.sh and cron.sh dependencies +RUN set -ex; \ + \ + apk add --no-cache \ + rsync \ + ; \ + \ + rm /var/spool/cron/crontabs/root; \ + echo '*/15 * * * * php -f /var/www/html/cron.php' > /var/spool/cron/crontabs/www-data + +# install the PHP extensions we need +# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html +RUN set -ex; \ + \ + apk add --no-cache --virtual .build-deps \ + $PHPIZE_DEPS \ + autoconf \ + freetype-dev \ + icu-dev \ + libevent-dev \ + libjpeg-turbo-dev \ + libmcrypt-dev \ + libpng-dev \ + libmemcached-dev \ + libxml2-dev \ + openldap-dev \ + pcre-dev \ + postgresql-dev \ + imagemagick-dev \ + libwebp-dev \ + ; \ + \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ + docker-php-ext-configure ldap; \ + docker-php-ext-install -j "$(nproc)" \ + exif \ + gd \ + intl \ + ldap \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + zip \ + ; \ + \ +# pecl will claim success even if one install fails, so we need to perform each install separately + pecl install APCu-5.1.17; \ + pecl install memcached-3.1.3; \ + pecl install redis-4.3.0; \ + pecl install imagick-3.4.4; \ + \ + docker-php-ext-enable \ + apcu \ + memcached \ + redis \ + imagick \ + ; \ + \ + runDeps="$( \ + scanelf --needed --nobanner --format '%n#p' --recursive /usr/local/lib/php/extensions \ + | tr ',' '\n' \ + | sort -u \ + | awk 'system("[ -e /usr/local/lib/" $1 " ]") == 0 { next } { print "so:" $1 }' \ + )"; \ + apk add --virtual .nextcloud-phpext-rundeps $runDeps; \ + apk del .build-deps + +# set recommended PHP.ini settings +# see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache +RUN { \ + echo 'opcache.enable=1'; \ + echo 'opcache.interned_strings_buffer=8'; \ + echo 'opcache.max_accelerated_files=10000'; \ + echo 'opcache.memory_consumption=128'; \ + echo 'opcache.save_comments=1'; \ + echo 'opcache.revalidate_freq=1'; \ + } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + \ + echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + \ + echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini; \ + \ + mkdir /var/www/data; \ + chown -R www-data:root /var/www; \ + chmod -R g=u /var/www + +VOLUME /var/www/html + + +ENV NEXTCLOUD_VERSION 14.0.13RC1 + +RUN set -ex; \ + apk add --no-cache --virtual .fetch-deps \ + bzip2 \ + gnupg \ + ; \ + \ + curl -fsSL -o nextcloud.tar.bz2 \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + curl -fsSL -o nextcloud.tar.bz2.asc \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ +# gpg key from https://nextcloud.com/nextcloud.asc + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ + gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + rm -rf /usr/src/nextcloud/updater; \ + mkdir -p /usr/src/nextcloud/data; \ + mkdir -p /usr/src/nextcloud/custom_apps; \ + chmod +x /usr/src/nextcloud/occ; \ + apk del .fetch-deps + +COPY *.sh upgrade.exclude / +COPY config/* /usr/src/nextcloud/config/ + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["php-fpm"] diff --git a/14.0-rc/fpm-alpine/config/apcu.config.php b/14.0-rc/fpm-alpine/config/apcu.config.php new file mode 100644 index 00000000..69fed876 --- /dev/null +++ b/14.0-rc/fpm-alpine/config/apcu.config.php @@ -0,0 +1,4 @@ + '\OC\Memcache\APCu', +); diff --git a/14.0-rc/fpm-alpine/config/apps.config.php b/14.0-rc/fpm-alpine/config/apps.config.php new file mode 100644 index 00000000..a4bed833 --- /dev/null +++ b/14.0-rc/fpm-alpine/config/apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + "path" => OC::$SERVERROOT."/apps", + "url" => "/apps", + "writable" => false, + ), + 1 => array ( + "path" => OC::$SERVERROOT."/custom_apps", + "url" => "/custom_apps", + "writable" => true, + ), + ), +); diff --git a/14.0-rc/fpm-alpine/config/autoconfig.php b/14.0-rc/fpm-alpine/config/autoconfig.php new file mode 100644 index 00000000..deeabe4e --- /dev/null +++ b/14.0-rc/fpm-alpine/config/autoconfig.php @@ -0,0 +1,31 @@ + '\OC\Memcache\Redis', + 'memcache.locking' => '\OC\Memcache\Redis', + 'redis' => array( + 'host' => getenv('REDIS_HOST'), + 'port' => getenv('REDIS_HOST_PORT') ?: 6379, + ), + ); +} + diff --git a/14.0-rc/fpm-alpine/config/smtp.config.php b/14.0-rc/fpm-alpine/config/smtp.config.php new file mode 100644 index 00000000..59f1eaa1 --- /dev/null +++ b/14.0-rc/fpm-alpine/config/smtp.config.php @@ -0,0 +1,15 @@ + 'smtp', + 'mail_smtphost' => getenv('SMTP_HOST'), + 'mail_smtpport' => getenv('SMTP_PORT') ?: (getenv('SMTP_SECURE') ? 465 : 25), + 'mail_smtpsecure' => getenv('SMTP_SECURE') ?: '', + 'mail_smtpauth' => getenv('SMTP_NAME') && getenv('SMTP_PASSWORD'), + 'mail_smtpauthtype' => getenv('SMTP_AUTHTYPE') ?: 'LOGIN', + 'mail_smtpname' => getenv('SMTP_NAME') ?: '', + 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', + 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), + 'mail_domain' => getenv('MAIL_DOMAIN'), + ); +} diff --git a/14.0-rc/fpm-alpine/cron.sh b/14.0-rc/fpm-alpine/cron.sh new file mode 100755 index 00000000..4dfa4118 --- /dev/null +++ b/14.0-rc/fpm-alpine/cron.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +exec busybox crond -f -l 0 -L /dev/stdout diff --git a/14.0-rc/fpm-alpine/entrypoint.sh b/14.0-rc/fpm-alpine/entrypoint.sh new file mode 100755 index 00000000..0be9d287 --- /dev/null +++ b/14.0-rc/fpm-alpine/entrypoint.sh @@ -0,0 +1,140 @@ +#!/bin/sh +set -eu + +# version_greater A B returns whether A > B +version_greater() { + [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] +} + +# return true if specified directory is empty +directory_empty() { + [ -z "$(ls -A "$1/")" ] +} + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + installed_version="0.0.0.0" + if [ -f /var/www/html/version.php ]; then + # shellcheck disable=SC2016 + installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" + fi + # shellcheck disable=SC2016 + image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + + if version_greater "$installed_version" "$image_version"; then + echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" + exit 1 + fi + + if version_greater "$image_version" "$installed_version"; then + echo "Initializing nextcloud $image_version ..." + if [ "$installed_version" != "0.0.0.0" ]; then + echo "Upgrading nextcloud from $installed_version ..." + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before + fi + if [ "$(id -u)" = 0 ]; then + rsync_options="-rlDog --chown www-data:root" + else + rsync_options="-rlD" + fi + rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ + + for dir in config data custom_apps themes; do + if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then + rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + fi + done + rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + echo "Initializing finished" + + #install + if [ "$installed_version" = "0.0.0.0" ]; then + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + 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"' + 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"' + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + 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 + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + 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" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + #upgrade + else + run_as 'php /var/www/html/occ upgrade' + + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after + echo "The following apps have been disabled:" + diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 + rm -f /tmp/list_before /tmp/list_after + + fi + fi +fi + +exec "$@" diff --git a/14.0-rc/fpm-alpine/upgrade.exclude b/14.0-rc/fpm-alpine/upgrade.exclude new file mode 100644 index 00000000..354864da --- /dev/null +++ b/14.0-rc/fpm-alpine/upgrade.exclude @@ -0,0 +1,5 @@ +/config/ +/data/ +/custom_apps/ +/themes/ +/version.php diff --git a/14.0-rc/fpm/Dockerfile b/14.0-rc/fpm/Dockerfile new file mode 100644 index 00000000..8a35811c --- /dev/null +++ b/14.0-rc/fpm/Dockerfile @@ -0,0 +1,138 @@ +# DO NOT EDIT: created by update.sh from Dockerfile-debian.template +FROM php:7.2-fpm-stretch + +# entrypoint.sh and cron.sh dependencies +RUN set -ex; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + rsync \ + bzip2 \ + busybox-static \ + ; \ + rm -rf /var/lib/apt/lists/*; \ + \ + mkdir -p /var/spool/cron/crontabs; \ + echo '*/15 * * * * php -f /var/www/html/cron.php' > /var/spool/cron/crontabs/www-data + +# install the PHP extensions we need +# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html +RUN set -ex; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libcurl4-openssl-dev \ + libevent-dev \ + libfreetype6-dev \ + libicu-dev \ + libjpeg-dev \ + libldap2-dev \ + libmcrypt-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libxml2-dev \ + libmagickwand-dev \ + libwebp-dev \ + ; \ + \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ + docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ + docker-php-ext-install -j "$(nproc)" \ + exif \ + gd \ + intl \ + ldap \ + opcache \ + pcntl \ + pdo_mysql \ + pdo_pgsql \ + zip \ + ; \ + \ +# pecl will claim success even if one install fails, so we need to perform each install separately + pecl install APCu-5.1.17; \ + pecl install memcached-3.1.3; \ + pecl install redis-4.3.0; \ + pecl install imagick-3.4.4; \ + \ + docker-php-ext-enable \ + apcu \ + memcached \ + redis \ + imagick \ + ; \ + \ +# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/* + +# set recommended PHP.ini settings +# see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache +RUN { \ + echo 'opcache.enable=1'; \ + echo 'opcache.interned_strings_buffer=8'; \ + echo 'opcache.max_accelerated_files=10000'; \ + echo 'opcache.memory_consumption=128'; \ + echo 'opcache.save_comments=1'; \ + echo 'opcache.revalidate_freq=1'; \ + } > /usr/local/etc/php/conf.d/opcache-recommended.ini; \ + \ + echo 'apc.enable_cli=1' >> /usr/local/etc/php/conf.d/docker-php-ext-apcu.ini; \ + \ + echo 'memory_limit=512M' > /usr/local/etc/php/conf.d/memory-limit.ini; \ + \ + mkdir /var/www/data; \ + chown -R www-data:root /var/www; \ + chmod -R g=u /var/www + +VOLUME /var/www/html + + +ENV NEXTCLOUD_VERSION 14.0.13RC1 + +RUN set -ex; \ + fetchDeps=" \ + gnupg \ + dirmngr \ + "; \ + apt-get update; \ + apt-get install -y --no-install-recommends $fetchDeps; \ + \ + curl -fsSL -o nextcloud.tar.bz2 \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2"; \ + curl -fsSL -o nextcloud.tar.bz2.asc \ + "https://download.nextcloud.com/server/prereleases/nextcloud-${NEXTCLOUD_VERSION}.tar.bz2.asc"; \ + export GNUPGHOME="$(mktemp -d)"; \ +# gpg key from https://nextcloud.com/nextcloud.asc + gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys 28806A878AE423A28372792ED75899B9A724937A; \ + gpg --batch --verify nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + tar -xjf nextcloud.tar.bz2 -C /usr/src/; \ + gpgconf --kill all; \ + rm -r "$GNUPGHOME" nextcloud.tar.bz2.asc nextcloud.tar.bz2; \ + rm -rf /usr/src/nextcloud/updater; \ + mkdir -p /usr/src/nextcloud/data; \ + mkdir -p /usr/src/nextcloud/custom_apps; \ + chmod +x /usr/src/nextcloud/occ; \ + \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $fetchDeps; \ + rm -rf /var/lib/apt/lists/* + +COPY *.sh upgrade.exclude / +COPY config/* /usr/src/nextcloud/config/ + +ENTRYPOINT ["/entrypoint.sh"] +CMD ["php-fpm"] diff --git a/14.0-rc/fpm/config/apcu.config.php b/14.0-rc/fpm/config/apcu.config.php new file mode 100644 index 00000000..69fed876 --- /dev/null +++ b/14.0-rc/fpm/config/apcu.config.php @@ -0,0 +1,4 @@ + '\OC\Memcache\APCu', +); diff --git a/14.0-rc/fpm/config/apps.config.php b/14.0-rc/fpm/config/apps.config.php new file mode 100644 index 00000000..a4bed833 --- /dev/null +++ b/14.0-rc/fpm/config/apps.config.php @@ -0,0 +1,15 @@ + array ( + 0 => array ( + "path" => OC::$SERVERROOT."/apps", + "url" => "/apps", + "writable" => false, + ), + 1 => array ( + "path" => OC::$SERVERROOT."/custom_apps", + "url" => "/custom_apps", + "writable" => true, + ), + ), +); diff --git a/14.0-rc/fpm/config/autoconfig.php b/14.0-rc/fpm/config/autoconfig.php new file mode 100644 index 00000000..deeabe4e --- /dev/null +++ b/14.0-rc/fpm/config/autoconfig.php @@ -0,0 +1,31 @@ + '\OC\Memcache\Redis', + 'memcache.locking' => '\OC\Memcache\Redis', + 'redis' => array( + 'host' => getenv('REDIS_HOST'), + 'port' => getenv('REDIS_HOST_PORT') ?: 6379, + ), + ); +} + diff --git a/14.0-rc/fpm/config/smtp.config.php b/14.0-rc/fpm/config/smtp.config.php new file mode 100644 index 00000000..59f1eaa1 --- /dev/null +++ b/14.0-rc/fpm/config/smtp.config.php @@ -0,0 +1,15 @@ + 'smtp', + 'mail_smtphost' => getenv('SMTP_HOST'), + 'mail_smtpport' => getenv('SMTP_PORT') ?: (getenv('SMTP_SECURE') ? 465 : 25), + 'mail_smtpsecure' => getenv('SMTP_SECURE') ?: '', + 'mail_smtpauth' => getenv('SMTP_NAME') && getenv('SMTP_PASSWORD'), + 'mail_smtpauthtype' => getenv('SMTP_AUTHTYPE') ?: 'LOGIN', + 'mail_smtpname' => getenv('SMTP_NAME') ?: '', + 'mail_smtppassword' => getenv('SMTP_PASSWORD') ?: '', + 'mail_from_address' => getenv('MAIL_FROM_ADDRESS'), + 'mail_domain' => getenv('MAIL_DOMAIN'), + ); +} diff --git a/14.0-rc/fpm/cron.sh b/14.0-rc/fpm/cron.sh new file mode 100755 index 00000000..4dfa4118 --- /dev/null +++ b/14.0-rc/fpm/cron.sh @@ -0,0 +1,4 @@ +#!/bin/sh +set -eu + +exec busybox crond -f -l 0 -L /dev/stdout diff --git a/14.0-rc/fpm/entrypoint.sh b/14.0-rc/fpm/entrypoint.sh new file mode 100755 index 00000000..0be9d287 --- /dev/null +++ b/14.0-rc/fpm/entrypoint.sh @@ -0,0 +1,140 @@ +#!/bin/sh +set -eu + +# version_greater A B returns whether A > B +version_greater() { + [ "$(printf '%s\n' "$@" | sort -t '.' -n -k1,1 -k2,2 -k3,3 -k4,4 | head -n 1)" != "$1" ] +} + +# return true if specified directory is empty +directory_empty() { + [ -z "$(ls -A "$1/")" ] +} + +run_as() { + if [ "$(id -u)" = 0 ]; then + su -p www-data -s /bin/sh -c "$1" + else + sh -c "$1" + fi +} + +if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UPDATE:-0}" -eq 1 ]; then + if [ -n "${REDIS_HOST+x}" ]; then + + echo "Configuring Redis as session handler" + { + echo 'session.save_handler = redis' + echo "session.save_path = \"tcp://${REDIS_HOST}:${REDIS_HOST_PORT:=6379}\"" + } > /usr/local/etc/php/conf.d/redis-session.ini + fi + + installed_version="0.0.0.0" + if [ -f /var/www/html/version.php ]; then + # shellcheck disable=SC2016 + installed_version="$(php -r 'require "/var/www/html/version.php"; echo implode(".", $OC_Version);')" + fi + # shellcheck disable=SC2016 + image_version="$(php -r 'require "/usr/src/nextcloud/version.php"; echo implode(".", $OC_Version);')" + + if version_greater "$installed_version" "$image_version"; then + echo "Can't start Nextcloud because the version of the data ($installed_version) is higher than the docker image version ($image_version) and downgrading is not supported. Are you sure you have pulled the newest image version?" + exit 1 + fi + + if version_greater "$image_version" "$installed_version"; then + echo "Initializing nextcloud $image_version ..." + if [ "$installed_version" != "0.0.0.0" ]; then + echo "Upgrading nextcloud from $installed_version ..." + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_before + fi + if [ "$(id -u)" = 0 ]; then + rsync_options="-rlDog --chown www-data:root" + else + rsync_options="-rlD" + fi + rsync $rsync_options --delete --exclude-from=/upgrade.exclude /usr/src/nextcloud/ /var/www/html/ + + for dir in config data custom_apps themes; do + if [ ! -d "/var/www/html/$dir" ] || directory_empty "/var/www/html/$dir"; then + rsync $rsync_options --include "/$dir/" --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + fi + done + rsync $rsync_options --include '/version.php' --exclude '/*' /usr/src/nextcloud/ /var/www/html/ + echo "Initializing finished" + + #install + if [ "$installed_version" = "0.0.0.0" ]; then + echo "New nextcloud instance" + + if [ -n "${NEXTCLOUD_ADMIN_USER+x}" ] && [ -n "${NEXTCLOUD_ADMIN_PASSWORD+x}" ]; then + # shellcheck disable=SC2016 + install_options='-n --admin-user "$NEXTCLOUD_ADMIN_USER" --admin-pass "$NEXTCLOUD_ADMIN_PASSWORD"' + if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then + # shellcheck disable=SC2016 + install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' + fi + if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then + # shellcheck disable=SC2016 + 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"' + 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"' + 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"' + install=true + fi + + if [ "$install" = true ]; then + echo "starting nextcloud installation" + 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 + if [ -n "${NEXTCLOUD_TRUSTED_DOMAINS+x}" ]; then + echo "setting trusted domains…" + 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" + NC_TRUSTED_DOMAIN_IDX=$(($NC_TRUSTED_DOMAIN_IDX+1)) + done + fi + else + echo "running web-based installer on first connect!" + fi + fi + #upgrade + else + run_as 'php /var/www/html/occ upgrade' + + run_as 'php /var/www/html/occ app:list' | sed -n "/Enabled:/,/Disabled:/p" > /tmp/list_after + echo "The following apps have been disabled:" + diff /tmp/list_before /tmp/list_after | grep '<' | cut -d- -f2 | cut -d: -f1 + rm -f /tmp/list_before /tmp/list_after + + fi + fi +fi + +exec "$@" diff --git a/14.0-rc/fpm/upgrade.exclude b/14.0-rc/fpm/upgrade.exclude new file mode 100644 index 00000000..354864da --- /dev/null +++ b/14.0-rc/fpm/upgrade.exclude @@ -0,0 +1,5 @@ +/config/ +/data/ +/custom_apps/ +/themes/ +/version.php diff --git a/14.0/apache/Dockerfile b/14.0/apache/Dockerfile index 7de9415b..a74da378 100644 --- a/14.0/apache/Dockerfile +++ b/14.0/apache/Dockerfile @@ -35,12 +35,13 @@ RUN set -ex; \ libpq-dev \ libxml2-dev \ libmagickwand-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -56,7 +57,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -83,7 +84,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -110,7 +110,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 14.0.10 +ENV NEXTCLOUD_VERSION 14.0.12 RUN set -ex; \ fetchDeps=" \ diff --git a/14.0/apache/config/autoconfig.php b/14.0/apache/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/14.0/apache/config/autoconfig.php +++ b/14.0/apache/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/14.0/apache/entrypoint.sh b/14.0/apache/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/14.0/apache/entrypoint.sh +++ b/14.0/apache/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/14.0/fpm-alpine/Dockerfile b/14.0/fpm-alpine/Dockerfile index 95765f1e..666ef1a2 100644 --- a/14.0/fpm-alpine/Dockerfile +++ b/14.0/fpm-alpine/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template -FROM php:7.2-fpm-alpine3.9 +FROM php:7.2-fpm-alpine3.10 # entrypoint.sh and cron.sh dependencies RUN set -ex; \ @@ -30,11 +30,12 @@ RUN set -ex; \ pcre-dev \ postgresql-dev \ imagemagick-dev \ + libwebp-dev \ ; \ \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -50,7 +51,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -72,7 +73,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -91,7 +91,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 14.0.10 +ENV NEXTCLOUD_VERSION 14.0.12 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ diff --git a/14.0/fpm-alpine/config/autoconfig.php b/14.0/fpm-alpine/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/14.0/fpm-alpine/config/autoconfig.php +++ b/14.0/fpm-alpine/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/14.0/fpm-alpine/entrypoint.sh b/14.0/fpm-alpine/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/14.0/fpm-alpine/entrypoint.sh +++ b/14.0/fpm-alpine/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/14.0/fpm/Dockerfile b/14.0/fpm/Dockerfile index d50f6d6c..fbc2cf2c 100644 --- a/14.0/fpm/Dockerfile +++ b/14.0/fpm/Dockerfile @@ -35,12 +35,13 @@ RUN set -ex; \ libpq-dev \ libxml2-dev \ libmagickwand-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -56,7 +57,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -83,7 +84,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -102,7 +102,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 14.0.10 +ENV NEXTCLOUD_VERSION 14.0.12 RUN set -ex; \ fetchDeps=" \ diff --git a/14.0/fpm/config/autoconfig.php b/14.0/fpm/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/14.0/fpm/config/autoconfig.php +++ b/14.0/fpm/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/14.0/fpm/entrypoint.sh b/14.0/fpm/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/14.0/fpm/entrypoint.sh +++ b/14.0/fpm/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/15.0/apache/Dockerfile b/15.0/apache/Dockerfile index bf5237ca..3a05e633 100644 --- a/15.0/apache/Dockerfile +++ b/15.0/apache/Dockerfile @@ -36,12 +36,13 @@ RUN set -ex; \ libxml2-dev \ libmagickwand-dev \ libzip-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -57,7 +58,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -84,7 +85,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -111,7 +111,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 15.0.7 +ENV NEXTCLOUD_VERSION 15.0.9 RUN set -ex; \ fetchDeps=" \ diff --git a/15.0/apache/config/autoconfig.php b/15.0/apache/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/15.0/apache/config/autoconfig.php +++ b/15.0/apache/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/15.0/apache/entrypoint.sh b/15.0/apache/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/15.0/apache/entrypoint.sh +++ b/15.0/apache/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/15.0/fpm-alpine/Dockerfile b/15.0/fpm-alpine/Dockerfile index effdfe84..d74714a0 100644 --- a/15.0/fpm-alpine/Dockerfile +++ b/15.0/fpm-alpine/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template -FROM php:7.3-fpm-alpine3.9 +FROM php:7.3-fpm-alpine3.10 # entrypoint.sh and cron.sh dependencies RUN set -ex; \ @@ -31,11 +31,12 @@ RUN set -ex; \ pcre-dev \ postgresql-dev \ imagemagick-dev \ + libwebp-dev \ ; \ \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -51,7 +52,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -73,7 +74,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -92,7 +92,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 15.0.7 +ENV NEXTCLOUD_VERSION 15.0.9 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ diff --git a/15.0/fpm-alpine/config/autoconfig.php b/15.0/fpm-alpine/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/15.0/fpm-alpine/config/autoconfig.php +++ b/15.0/fpm-alpine/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/15.0/fpm-alpine/entrypoint.sh b/15.0/fpm-alpine/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/15.0/fpm-alpine/entrypoint.sh +++ b/15.0/fpm-alpine/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/15.0/fpm/Dockerfile b/15.0/fpm/Dockerfile index cf3b1af7..7219e826 100644 --- a/15.0/fpm/Dockerfile +++ b/15.0/fpm/Dockerfile @@ -36,12 +36,13 @@ RUN set -ex; \ libxml2-dev \ libmagickwand-dev \ libzip-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -57,7 +58,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -84,7 +85,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -103,7 +103,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 15.0.7 +ENV NEXTCLOUD_VERSION 15.0.9 RUN set -ex; \ fetchDeps=" \ diff --git a/15.0/fpm/config/autoconfig.php b/15.0/fpm/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/15.0/fpm/config/autoconfig.php +++ b/15.0/fpm/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/15.0/fpm/entrypoint.sh b/15.0/fpm/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/15.0/fpm/entrypoint.sh +++ b/15.0/fpm/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/16.0/apache/Dockerfile b/16.0/apache/Dockerfile index dc5193e7..a65b859b 100644 --- a/16.0/apache/Dockerfile +++ b/16.0/apache/Dockerfile @@ -36,12 +36,13 @@ RUN set -ex; \ libxml2-dev \ libmagickwand-dev \ libzip-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -57,7 +58,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -84,7 +85,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -111,7 +111,7 @@ RUN a2enmod rewrite remoteip ;\ } > /etc/apache2/conf-available/remoteip.conf;\ a2enconf remoteip -ENV NEXTCLOUD_VERSION 16.0.0 +ENV NEXTCLOUD_VERSION 16.0.2 RUN set -ex; \ fetchDeps=" \ diff --git a/16.0/apache/config/autoconfig.php b/16.0/apache/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/16.0/apache/config/autoconfig.php +++ b/16.0/apache/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/16.0/apache/entrypoint.sh b/16.0/apache/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/16.0/apache/entrypoint.sh +++ b/16.0/apache/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/16.0/fpm-alpine/Dockerfile b/16.0/fpm-alpine/Dockerfile index 23ba8961..fd64f88c 100644 --- a/16.0/fpm-alpine/Dockerfile +++ b/16.0/fpm-alpine/Dockerfile @@ -1,5 +1,5 @@ # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template -FROM php:7.3-fpm-alpine3.9 +FROM php:7.3-fpm-alpine3.10 # entrypoint.sh and cron.sh dependencies RUN set -ex; \ @@ -31,11 +31,12 @@ RUN set -ex; \ pcre-dev \ postgresql-dev \ imagemagick-dev \ + libwebp-dev \ ; \ \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -51,7 +52,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -73,7 +74,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -92,7 +92,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 16.0.0 +ENV NEXTCLOUD_VERSION 16.0.2 RUN set -ex; \ apk add --no-cache --virtual .fetch-deps \ diff --git a/16.0/fpm-alpine/config/autoconfig.php b/16.0/fpm-alpine/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/16.0/fpm-alpine/config/autoconfig.php +++ b/16.0/fpm-alpine/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/16.0/fpm-alpine/entrypoint.sh b/16.0/fpm-alpine/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/16.0/fpm-alpine/entrypoint.sh +++ b/16.0/fpm-alpine/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/16.0/fpm/Dockerfile b/16.0/fpm/Dockerfile index a2bc6156..329ae8e7 100644 --- a/16.0/fpm/Dockerfile +++ b/16.0/fpm/Dockerfile @@ -36,12 +36,13 @@ RUN set -ex; \ libxml2-dev \ libmagickwand-dev \ libzip-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -57,7 +58,7 @@ RUN set -ex; \ pecl install APCu-5.1.17; \ pecl install memcached-3.1.3; \ pecl install redis-4.3.0; \ - pecl install imagick-3.4.3; \ + pecl install imagick-3.4.4; \ \ docker-php-ext-enable \ apcu \ @@ -84,7 +85,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ @@ -103,7 +103,7 @@ RUN { \ VOLUME /var/www/html -ENV NEXTCLOUD_VERSION 16.0.0 +ENV NEXTCLOUD_VERSION 16.0.2 RUN set -ex; \ fetchDeps=" \ diff --git a/16.0/fpm/config/autoconfig.php b/16.0/fpm/config/autoconfig.php index 85e02212..deeabe4e 100644 --- a/16.0/fpm/config/autoconfig.php +++ b/16.0/fpm/config/autoconfig.php @@ -23,7 +23,9 @@ if (getenv('SQLITE_DATABASE')) { } if ($autoconfig_enabled) { - $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX') ?: ""; + if (getenv('NEXTCLOUD_TABLE_PREFIX')) { + $AUTOCONFIG["dbtableprefix"] = getenv('NEXTCLOUD_TABLE_PREFIX'); + } $AUTOCONFIG["directory"] = getenv('NEXTCLOUD_DATA_DIR') ?: "/var/www/html/data"; } diff --git a/16.0/fpm/entrypoint.sh b/16.0/fpm/entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/16.0/fpm/entrypoint.sh +++ b/16.0/fpm/entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/Dockerfile-alpine.template b/Dockerfile-alpine.template index e35d1807..18e79575 100644 --- a/Dockerfile-alpine.template +++ b/Dockerfile-alpine.template @@ -1,4 +1,4 @@ -FROM php:%%PHP_VERSION%%-%%VARIANT%%3.9 +FROM php:%%PHP_VERSION%%-%%VARIANT%%3.10 # entrypoint.sh and cron.sh dependencies RUN set -ex; \ @@ -30,11 +30,12 @@ RUN set -ex; \ pcre-dev \ postgresql-dev \ imagemagick-dev \ + libwebp-dev \ ; \ \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -72,7 +73,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ diff --git a/Dockerfile-debian.template b/Dockerfile-debian.template index d7a00264..e31550a4 100644 --- a/Dockerfile-debian.template +++ b/Dockerfile-debian.template @@ -35,12 +35,13 @@ RUN set -ex; \ libxml2-dev \ libmagickwand-dev \ libzip-dev \ + libwebp-dev \ ; \ \ debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr; \ + docker-php-ext-configure gd --with-freetype-dir=/usr --with-png-dir=/usr --with-jpeg-dir=/usr --with-webp-dir=/usr; \ docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ + docker-php-ext-install -j "$(nproc)" \ exif \ gd \ intl \ @@ -83,7 +84,6 @@ RUN set -ex; \ # see https://docs.nextcloud.com/server/12/admin_manual/configuration_server/server_tuning.html#enable-php-opcache RUN { \ echo 'opcache.enable=1'; \ - echo 'opcache.enable_cli=1'; \ echo 'opcache.interned_strings_buffer=8'; \ echo 'opcache.max_accelerated_files=10000'; \ echo 'opcache.memory_consumption=128'; \ diff --git a/README.md b/README.md index 88c15454..22a61007 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,14 @@ # What is Nextcloud? -[![Build Status update.sh](https://doi-janky.infosiftr.net/job/update.sh/job/nextcloud/badge/icon)](https://doi-janky.infosiftr.net/job/update.sh/job/nextcloud) [![Build Status Travis](https://travis-ci.org/nextcloud/docker.svg?branch=master)](https://travis-ci.org/nextcloud/docker) +[![amd64 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/amd64/job/nextcloud.svg?label=amd64)](https://doi-janky.infosiftr.net/job/multiarch/job/amd64/job/nextcloud) +[![arm32v5 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/arm32v5/job/nextcloud.svg?label=arm32v5)](https://doi-janky.infosiftr.net/job/multiarch/job/arm32v5/job/nextcloud) +[![arm32v6 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/arm32v6/job/nextcloud.svg?label=arm32v6)](https://doi-janky.infosiftr.net/job/multiarch/job/arm32v6/job/nextcloud) +[![arm32v7 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/arm32v7/job/nextcloud.svg?label=arm32v7)](https://doi-janky.infosiftr.net/job/multiarch/job/arm32v7/job/nextcloud) +[![arm64v8 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/arm64v8/job/nextcloud.svg?label=arm64v8)](https://doi-janky.infosiftr.net/job/multiarch/job/arm64v8/job/nextcloud) +[![i386 build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/i386/job/nextcloud.svg?label=i386)](https://doi-janky.infosiftr.net/job/multiarch/job/i386/job/nextcloud) +[![ppc64le build status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/ppc64le/job/nextcloud.svg?label=ppc64le)](https://doi-janky.infosiftr.net/job/multiarch/job/ppc64le/job/nextcloud) + A safe home for all your data. Access & share your files, calendars, contacts, mail & more from any device, on your terms. @@ -97,7 +104,7 @@ $ docker-compose exec --user www-data app php occ ## Auto configuration via environment variables The nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. ONLY use one database type! -__SQLITE_DATABASE__: +__SQLite__: - `SQLITE_DATABASE` Name of the database using sqlite __MYSQL/MariaDB__: diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 78bd0a8d..0be9d287 100755 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -73,8 +73,6 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP if [ -n "${NEXTCLOUD_TABLE_PREFIX+x}" ]; then # shellcheck disable=SC2016 install_options=$install_options' --database-table-prefix "$NEXTCLOUD_TABLE_PREFIX"' - else - install_options=$install_options' --database-table-prefix ""' fi if [ -n "${NEXTCLOUD_DATA_DIR+x}" ]; then # shellcheck disable=SC2016 @@ -82,7 +80,7 @@ if expr "$1" : "apache" 1>/dev/null || [ "$1" = "php-fpm" ] || [ "${NEXTCLOUD_UP fi install=false - if [ -n "${SQLITE_DATABASE+x}" ]; then + if [ -n "${SQLITE_DATABASE+x}" ]; then echo "Installing with SQLite database" # shellcheck disable=SC2016 install_options=$install_options' --database-name "$SQLITE_DATABASE"' diff --git a/generate-stackbrew-library.sh b/generate-stackbrew-library.sh index 73a6cab7..7914902f 100755 --- a/generate-stackbrew-library.sh +++ b/generate-stackbrew-library.sh @@ -2,8 +2,8 @@ set -Eeuo pipefail declare -A release_channel=( - [stable]='15.0.7' - [production]='15.0.7' + [stable]='16.0.1' + [production]='15.0.8' ) self="$(basename "$BASH_SOURCE")" diff --git a/update.sh b/update.sh index d645f4a1..5746c48e 100755 --- a/update.sh +++ b/update.sh @@ -63,7 +63,7 @@ imagick_version="$( declare -A pecl_versions=( [APCu]="$apcu_version" [memcached]="$memcached_version" - [redis]="$redis_version" + [redis]="4.3.0" [imagick]="$imagick_version" )