relocate src extraction to its own stage

This commit is contained in:
Archimedes Trajano 2025-12-11 16:51:23 -05:00
parent cf41fc0bdc
commit 9b8360df1c
9 changed files with 189 additions and 232 deletions

View File

@ -1,4 +1,20 @@
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template # DO NOT EDIT: created by update.sh from Dockerfile-debian.template
FROM php:8.3-apache-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-apache-trixie FROM php:8.3-apache-trixie
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -20,10 +36,12 @@ RUN set -ex; \
# install the PHP extensions we need # install the PHP extensions we need
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html # see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M \
ENV PHP_UPLOAD_LIMIT 512M PHP_UPLOAD_LIMIT=512M \
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN set -ex; \ RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
set -ex; \
\ \
savedAptMark="$(apt-mark showmanual)"; \ savedAptMark="$(apt-mark showmanual)"; \
\ \
@ -145,39 +163,14 @@ RUN a2enmod headers rewrite remoteip ; \
a2enconf remoteip a2enconf remoteip
# set apache config LimitRequestBody # set apache config LimitRequestBody
ENV APACHE_BODY_LIMIT 1073741824 ENV APACHE_BODY_LIMIT=1073741824
RUN { \ RUN { \
echo 'LimitRequestBody ${APACHE_BODY_LIMIT}'; \ echo 'LimitRequestBody ${APACHE_BODY_LIMIT}'; \
} > /etc/apache2/conf-available/apache-limits.conf; \ } > /etc/apache2/conf-available/apache-limits.conf; \
a2enconf apache-limits a2enconf apache-limits
ENV NEXTCLOUD_VERSION 31.0.12 ENV NEXTCLOUD_VERSION=31.0.12
COPY --from=usr-src /usr/src/ /usr/src/
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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; \
apt-get dist-clean
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,4 +1,21 @@
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
# This uses the same one as debian in order to leverage build cache
FROM php:8.3-fpm-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-fpm-alpine3.22 FROM php:8.3-fpm-alpine3.22
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -90,9 +107,9 @@ RUN set -ex; \
# set recommended PHP.ini settings # set recommended PHP.ini settings
# see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache # see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT 512M ENV PHP_UPLOAD_LIMIT=512M
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 ENV PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN { \ RUN { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -129,29 +146,9 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 31.0.12 ENV NEXTCLOUD_VERSION=31.0.12
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
bzip2 \
gnupg \
; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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 --no-network .fetch-deps
COPY --from=usr-src /usr/src/ /usr/src/
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,4 +1,20 @@
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template # DO NOT EDIT: created by update.sh from Dockerfile-debian.template
FROM php:8.3-fpm-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-fpm-trixie FROM php:8.3-fpm-trixie
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -20,10 +36,12 @@ RUN set -ex; \
# install the PHP extensions we need # install the PHP extensions we need
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html # see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M \
ENV PHP_UPLOAD_LIMIT 512M PHP_UPLOAD_LIMIT=512M \
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN set -ex; \ RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
set -ex; \
\ \
savedAptMark="$(apt-mark showmanual)"; \ savedAptMark="$(apt-mark showmanual)"; \
\ \
@ -136,33 +154,8 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 31.0.12 ENV NEXTCLOUD_VERSION=31.0.12
COPY --from=usr-src /usr/src/ /usr/src/
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v31.0.12/nextcloud-31.0.12.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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; \
apt-get dist-clean
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,4 +1,20 @@
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template # DO NOT EDIT: created by update.sh from Dockerfile-debian.template
FROM php:8.3-apache-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-apache-trixie FROM php:8.3-apache-trixie
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -20,10 +36,12 @@ RUN set -ex; \
# install the PHP extensions we need # install the PHP extensions we need
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html # see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M \
ENV PHP_UPLOAD_LIMIT 512M PHP_UPLOAD_LIMIT=512M \
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN set -ex; \ RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
set -ex; \
\ \
savedAptMark="$(apt-mark showmanual)"; \ savedAptMark="$(apt-mark showmanual)"; \
\ \
@ -145,39 +163,14 @@ RUN a2enmod headers rewrite remoteip ; \
a2enconf remoteip a2enconf remoteip
# set apache config LimitRequestBody # set apache config LimitRequestBody
ENV APACHE_BODY_LIMIT 1073741824 ENV APACHE_BODY_LIMIT=1073741824
RUN { \ RUN { \
echo 'LimitRequestBody ${APACHE_BODY_LIMIT}'; \ echo 'LimitRequestBody ${APACHE_BODY_LIMIT}'; \
} > /etc/apache2/conf-available/apache-limits.conf; \ } > /etc/apache2/conf-available/apache-limits.conf; \
a2enconf apache-limits a2enconf apache-limits
ENV NEXTCLOUD_VERSION 32.0.3 ENV NEXTCLOUD_VERSION=32.0.3
COPY --from=usr-src /usr/src/ /usr/src/
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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; \
apt-get dist-clean
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,4 +1,21 @@
# DO NOT EDIT: created by update.sh from Dockerfile-alpine.template # DO NOT EDIT: created by update.sh from Dockerfile-alpine.template
# This uses the same one as debian in order to leverage build cache
FROM php:8.3-fpm-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-fpm-alpine3.22 FROM php:8.3-fpm-alpine3.22
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -90,9 +107,9 @@ RUN set -ex; \
# set recommended PHP.ini settings # set recommended PHP.ini settings
# see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache # see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT 512M ENV PHP_UPLOAD_LIMIT=512M
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 ENV PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN { \ RUN { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -129,29 +146,9 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 32.0.3 ENV NEXTCLOUD_VERSION=32.0.3
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
bzip2 \
gnupg \
; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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 --no-network .fetch-deps
COPY --from=usr-src /usr/src/ /usr/src/
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,4 +1,20 @@
# DO NOT EDIT: created by update.sh from Dockerfile-debian.template # DO NOT EDIT: created by update.sh from Dockerfile-debian.template
FROM php:8.3-fpm-trixie AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2 nextcloud.tar.bz2
ADD https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:8.3-fpm-trixie FROM php:8.3-fpm-trixie
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -20,10 +36,12 @@ RUN set -ex; \
# install the PHP extensions we need # install the PHP extensions we need
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html # see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M \
ENV PHP_UPLOAD_LIMIT 512M PHP_UPLOAD_LIMIT=512M \
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN set -ex; \ RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
set -ex; \
\ \
savedAptMark="$(apt-mark showmanual)"; \ savedAptMark="$(apt-mark showmanual)"; \
\ \
@ -136,33 +154,8 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
ENV NEXTCLOUD_VERSION 32.0.3 ENV NEXTCLOUD_VERSION=32.0.3
COPY --from=usr-src /usr/src/ /usr/src/
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
curl -fsSL -o nextcloud.tar.bz2 "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2"; \
curl -fsSL -o nextcloud.tar.bz2.asc "https://github.com/nextcloud-releases/server/releases/download/v32.0.3/nextcloud-32.0.3.tar.bz2.asc"; \
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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; \
apt-get dist-clean
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,3 +1,20 @@
# This uses the same one as debian in order to leverage build cache
FROM php:%%PHP_VERSION%%-fpm-%%DEBIAN_VERSION%% AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD %%DOWNLOAD_URL%% nextcloud.tar.bz2
ADD %%DOWNLOAD_URL_ASC%% nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:%%PHP_VERSION%%-%%VARIANT%%%%ALPINE_VERSION%% FROM php:%%PHP_VERSION%%-%%VARIANT%%%%ALPINE_VERSION%%
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -89,9 +106,9 @@ RUN set -ex; \
# set recommended PHP.ini settings # set recommended PHP.ini settings
# see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache # see https://docs.nextcloud.com/server/latest/admin_manual/installation/server_tuning.html#enable-php-opcache
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M
ENV PHP_UPLOAD_LIMIT 512M ENV PHP_UPLOAD_LIMIT=512M
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 ENV PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN { \ RUN { \
echo 'opcache.enable=1'; \ echo 'opcache.enable=1'; \
echo 'opcache.interned_strings_buffer=32'; \ echo 'opcache.interned_strings_buffer=32'; \
@ -128,29 +145,9 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
%%VARIANT_EXTRAS%% %%VARIANT_EXTRAS%%
ENV NEXTCLOUD_VERSION %%VERSION%% ENV NEXTCLOUD_VERSION=%%VERSION%%
ADD %%DOWNLOAD_URL%% nextcloud.tar.bz2
ADD %%DOWNLOAD_URL_ASC%% nextcloud.tar.bz2.asc
RUN set -ex; \
apk add --no-cache --virtual .fetch-deps \
bzip2 \
gnupg \
; \
\
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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 --no-network .fetch-deps
COPY --from=usr-src /usr/src/ /usr/src/
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -1,3 +1,19 @@
FROM php:%%PHP_VERSION%%-fpm-%%DEBIAN_VERSION%% AS usr-src
RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
apt-get update -y && \
apt-get install -y gnupg dirmngr
ADD %%DOWNLOAD_URL%% nextcloud.tar.bz2
ADD %%DOWNLOAD_URL_ASC%% nextcloud.tar.bz2.asc
RUN tar -xjf nextcloud.tar.bz2 -C /usr/src/ && \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 28806A878AE423A28372792ED75899B9A724937A && \
gpg --batch --verify 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
FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%% FROM php:%%PHP_VERSION%%-%%VARIANT%%-%%DEBIAN_VERSION%%
# entrypoint.sh and cron.sh dependencies # entrypoint.sh and cron.sh dependencies
@ -19,10 +35,12 @@ RUN set -ex; \
# install the PHP extensions we need # install the PHP extensions we need
# see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html # see https://docs.nextcloud.com/server/stable/admin_manual/installation/source_installation.html
ENV PHP_MEMORY_LIMIT 512M ENV PHP_MEMORY_LIMIT=512M \
ENV PHP_UPLOAD_LIMIT 512M PHP_UPLOAD_LIMIT=512M \
ENV PHP_OPCACHE_MEMORY_CONSUMPTION 128 PHP_OPCACHE_MEMORY_CONSUMPTION=128
RUN set -ex; \ RUN --mount=type=cache,sharing=locked,target=/var/lib/apt \
--mount=type=cache,sharing=locked,target=/var/cache/apt \
set -ex; \
\ \
savedAptMark="$(apt-mark showmanual)"; \ savedAptMark="$(apt-mark showmanual)"; \
\ \
@ -135,32 +153,8 @@ RUN { \
VOLUME /var/www/html VOLUME /var/www/html
%%VARIANT_EXTRAS%% %%VARIANT_EXTRAS%%
ENV NEXTCLOUD_VERSION %%VERSION%% ENV NEXTCLOUD_VERSION=%%VERSION%%
ADD %%DOWNLOAD_URL%% nextcloud.tar.bz2 COPY --from=usr-src /usr/src/ /usr/src/
ADD %%DOWNLOAD_URL_ASC%% nextcloud.tar.bz2.asc
RUN set -ex; \
fetchDeps=" \
gnupg \
dirmngr \
"; \
apt-get update; \
apt-get install -y --no-install-recommends $fetchDeps; \
\
export GNUPGHOME="$(mktemp -d)"; \
# gpg key from https://nextcloud.com/nextcloud.asc
gpg --batch --keyserver keyserver.ubuntu.com --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 nextcloud.tar.bz2.asc nextcloud.tar.bz2; \
rm -rf "$GNUPGHOME" /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; \
apt-get dist-clean
COPY *.sh upgrade.exclude / COPY *.sh upgrade.exclude /
COPY config/* /usr/src/nextcloud/config/ COPY config/* /usr/src/nextcloud/config/

View File

@ -26,7 +26,7 @@ declare -A base=(
) )
declare -A extras=( declare -A extras=(
[apache]='\nRUN a2enmod headers rewrite remoteip ; \\\n { \\\n echo '\''RemoteIPHeader X-Real-IP'\''; \\\n echo '\''RemoteIPInternalProxy 10.0.0.0/8'\''; \\\n echo '\''RemoteIPInternalProxy 172.16.0.0/12'\''; \\\n echo '\''RemoteIPInternalProxy 192.168.0.0/16'\''; \\\n } > /etc/apache2/conf-available/remoteip.conf; \\\n a2enconf remoteip\n\n# set apache config LimitRequestBody\nENV APACHE_BODY_LIMIT 1073741824\nRUN { \\\n echo '\''LimitRequestBody ${APACHE_BODY_LIMIT}'\''; \\\n } > /etc/apache2/conf-available/apache-limits.conf; \\\n a2enconf apache-limits' [apache]='\nRUN a2enmod headers rewrite remoteip ; \\\n { \\\n echo '\''RemoteIPHeader X-Real-IP'\''; \\\n echo '\''RemoteIPInternalProxy 10.0.0.0/8'\''; \\\n echo '\''RemoteIPInternalProxy 172.16.0.0/12'\''; \\\n echo '\''RemoteIPInternalProxy 192.168.0.0/16'\''; \\\n } > /etc/apache2/conf-available/remoteip.conf; \\\n a2enconf remoteip\n\n# set apache config LimitRequestBody\nENV APACHE_BODY_LIMIT=1073741824\nRUN { \\\n echo '\''LimitRequestBody ${APACHE_BODY_LIMIT}'\''; \\\n } > /etc/apache2/conf-available/apache-limits.conf; \\\n a2enconf apache-limits'
[fpm]='' [fpm]=''
[fpm-alpine]='' [fpm-alpine]=''
) )