From 0e522fceb76db1190502e062107a537a51bf1ac0 Mon Sep 17 00:00:00 2001 From: Florent Daigniere Date: Wed, 20 Dec 2023 12:53:59 +0100 Subject: [PATCH] Upgrade alpine, node, PHP and snappymail --- core/admin/assets/Dockerfile | 2 +- core/base/Dockerfile | 10 ++++++---- towncrier/newsfragments/3097.misc | 1 + webmails/Dockerfile | 18 ++++++++++-------- webmails/start.py | 4 ++-- 5 files changed, 20 insertions(+), 15 deletions(-) create mode 100644 towncrier/newsfragments/3097.misc diff --git a/core/admin/assets/Dockerfile b/core/admin/assets/Dockerfile index 2ac9fe33..77196726 100644 --- a/core/admin/assets/Dockerfile +++ b/core/admin/assets/Dockerfile @@ -1,6 +1,6 @@ # syntax=docker/dockerfile-upstream:1.4.3 -FROM node:16-alpine3.16 +FROM node:21-alpine3.18 WORKDIR /work diff --git a/core/base/Dockerfile b/core/base/Dockerfile index 2f9c1142..c1c1c56e 100644 --- a/core/base/Dockerfile +++ b/core/base/Dockerfile @@ -3,7 +3,7 @@ # base system image (intermediate) # Note when updating the alpine tag, first manually run the workflow .github/workflows/mirror.yml. # Just run the workflow with the tag that must be synchronised. -ARG DISTRO=ghcr.io/mailu/alpine:3.18.4 +ARG DISTRO=ghcr.io/mailu/alpine:3.19.0 FROM $DISTRO as system ENV TZ=Etc/UTC LANG=C.UTF-8 @@ -64,8 +64,10 @@ RUN set -euxo pipefail \ ; curl -sL ${SNUFFLEUPAGUS_URL} | tar xz \ ; cd snuffleupagus-${SNUFFLEUPAGUS_VERSION} \ ; rm -rf src/tests/*php7*/ src/tests/*session*/ src/tests/broken_configuration/ src/tests/*cookie* src/tests/upload_validation/ \ - ; apk add --virtual .build-deps php81-dev php81-cgi php81-simplexml php81-xml pcre-dev build-base php81-pear php81-openssl re2c \ - ; pecl install vld-beta \ + ; apk add --virtual .build-deps php83-dev php83-cgi php83-simplexml php83-xml pcre-dev build-base php83-pear php83-openssl re2c \ + ; pecl83 install vld-beta \ + ; ln -s /usr/bin/phpize83 /usr/bin/phpize \ + ; ln -s /usr/bin/php-config83 /usr/bin/php-config \ ; make -j $(grep -c processor /proc/cpuinfo) release \ ; cp src/.libs/snuffleupagus.so /app \ ; rm -rf /root/.cargo /tmp/*.pem /root/.cache @@ -74,7 +76,7 @@ RUN set -euxo pipefail \ FROM system COPY --from=build /app/venv/ /app/venv/ -COPY --chown=root:root --from=build /app/snuffleupagus.so /usr/lib/php81/modules/ +COPY --chown=root:root --from=build /app/snuffleupagus.so /usr/lib/php83/modules/ ENV \ VIRTUAL_ENV=/app/venv \ diff --git a/towncrier/newsfragments/3097.misc b/towncrier/newsfragments/3097.misc new file mode 100644 index 00000000..a641eb75 --- /dev/null +++ b/towncrier/newsfragments/3097.misc @@ -0,0 +1 @@ +Upgrade node from 16 to 21 and alpine from 3.18 to 3.19 diff --git a/webmails/Dockerfile b/webmails/Dockerfile index 09fbd8ee..31774393 100644 --- a/webmails/Dockerfile +++ b/webmails/Dockerfile @@ -9,20 +9,22 @@ COPY snappymail/pubkey.asc /tmp/snappymail.asc COPY roundcube/pubkey.asc /tmp/roundcube.asc COPY roundcube/roundcube.diff /tmp/roundcube.diff +# php83-pecl-imagick php83-pecl-uuid are missing RUN set -euxo pipefail \ ; apk add --no-cache \ nginx gpg gpg-agent patch \ - php81 php81-fpm php81-mbstring php81-zip php81-xml php81-simplexml php81-pecl-apcu \ - php81-dom php81-curl php81-exif gd php81-gd php81-iconv php81-intl php81-openssl php81-ctype \ - php81-pdo_sqlite php81-pdo_mysql php81-pdo_pgsql php81-pdo php81-sodium libsodium php81-tidy php81-pecl-uuid \ - php81-pspell php81-pecl-imagick php81-opcache php81-session php81-sockets php81-fileinfo php81-xmlreader php81-xmlwriter \ + php83 php83-fpm php83-mbstring php83-zip php83-xml php83-simplexml php83-pecl-apcu \ + php83-dom php83-curl php83-exif gd php83-gd php83-iconv php83-intl php83-openssl php83-ctype \ + php83-pdo_sqlite php83-pdo_mysql php83-pdo_pgsql php83-pdo php83-sodium libsodium php83-tidy \ + php83-pspell php83-opcache php83-session php83-sockets php83-fileinfo php83-xmlreader php83-xmlwriter \ aspell-uk aspell-ru aspell-fr aspell-de aspell-en \ ; rm /etc/nginx/http.d/default.conf \ - ; rm /etc/php81/php-fpm.d/www.conf \ + ; rm /etc/php83/php-fpm.d/www.conf \ + ; ln -s /usr/bin/php83 /usr/bin/php \ ; mkdir -m 700 /root/.gnupg/ \ ; gpg --import /tmp/snappymail.asc \ ; gpg --import /tmp/roundcube.asc \ - ; echo extension=snuffleupagus > /etc/php81/conf.d/snuffleupagus.ini \ + ; echo extension=snuffleupagus > /etc/php83/conf.d/snuffleupagus.ini \ ; rm -f /tmp/roundcube.asc /tmp/snappymail.asc \ ; mkdir -p /run/nginx /conf @@ -53,7 +55,7 @@ COPY roundcube/config/config.inc.carddav.php /var/www/roundcube/plugins/carddav/ # snappymail -ENV SNAPPYMAIL_URL https://github.com/the-djmaze/snappymail/releases/download/v2.29.1/snappymail-2.29.1.tar.gz +ENV SNAPPYMAIL_URL https://github.com/the-djmaze/snappymail/releases/download/v2.31.0/snappymail-2.31.0.tar.gz RUN set -euxo pipefail \ ; mkdir /var/www/snappymail \ @@ -83,7 +85,7 @@ RUN set -euxo pipefail \ # common COPY start.py / COPY php.ini /defaults/ -COPY php-webmail.conf /etc/php81/php-fpm.d/ +COPY php-webmail.conf /etc/php83/php-fpm.d/ COPY nginx-webmail.conf /conf/ COPY snuffleupagus.rules /etc/snuffleupagus.rules.tpl diff --git a/webmails/start.py b/webmails/start.py index c7a1ddf4..8c70b878 100755 --- a/webmails/start.py +++ b/webmails/start.py @@ -77,7 +77,7 @@ os.makedirs(base + "configs", exist_ok=True) conf.jinja("/defaults/default.json", context, "/data/_data_/_default_/domains/default.json") conf.jinja("/defaults/application.ini", context, "/data/_data_/_default_/configs/application.ini") -conf.jinja("/defaults/php.ini", context, "/etc/php81/php.ini") +conf.jinja("/defaults/php.ini", context, "/etc/php83/php.ini") # setup permissions os.system("chown -R mailu:mailu /data") @@ -120,6 +120,6 @@ if os.path.exists("/var/run/nginx.pid"): system.clean_env() # run nginx -os.system("php-fpm81") +os.system("php-fpm83") os.execv("/usr/sbin/nginx", ["nginx", "-g", "daemon off;"])