From: Pablo Zmdl Date: Fri, 8 Nov 2024 11:12:21 +0000 (+0100) Subject: Renovate nightly setup X-Git-Url: http://git.99rst.org/?a=commitdiff_plain;h=8e7cd8b08b3e9899d59b576a0b274f3c415c7d88;p=roundcube-roundcubemail-docker.git Renovate nightly setup This radically reduces the code for the nightly image by reusing the release image and only overwriting the code. Most of the left lines is just special handling that the "master"-branch of roundcubemail requires before it's runnable. --- diff --git a/nightly/Dockerfile b/nightly/Dockerfile index 478a2a9..c4d0ab7 100644 --- a/nightly/Dockerfile +++ b/nightly/Dockerfile @@ -1,107 +1,19 @@ -FROM php:8.0-apache AS base -LABEL maintainer="Thomas Bruederli " -LABEL org.opencontainers.image.source="https://github.com/roundcube/roundcubemail-docker" - -RUN set -ex; \ - apt-get update; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - \ - apt-get install -y --no-install-recommends \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libldap2-dev \ - libmagickwand-dev \ - libpng-dev \ - libpq-dev \ - libsqlite3-dev \ - libzip-dev \ - libpspell-dev \ - libonig-dev \ - libldap-common \ - ; \ - \ - debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ - docker-php-ext-configure gd; \ - docker-php-ext-configure ldap --with-libdir="lib/$debMultiarch"; \ - docker-php-ext-install \ - exif \ - gd \ - intl \ - ldap \ - pdo_mysql \ - pdo_pgsql \ - pdo_sqlite \ - zip \ - pspell \ - ; \ - pecl install imagick redis; \ - docker-php-ext-enable imagick opcache redis; \ - \ -# 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; \ - extdir="$(php -r 'echo ini_get("extension_dir");')"; \ - ldd "$extdir"/*.so \ - | awk '/=>/ { so = $(NF-1); if (index(so, "/usr/local/") == 1) { next }; gsub("^/(usr/)?", "", so); print so }' \ - | 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/*; \ - ldd "$extdir"/*.so | grep -qzv "=> not found" || (echo "Sanity check failed: missing libraries:"; ldd "$extdir"/*.so | grep " => not found"; exit 1); \ - ldd "$extdir"/*.so | grep -q "libzip.so.* => .*/libzip.so.*" || (echo "Sanity check failed: libzip.so is not referenced"; ldd "$extdir"/*.so; exit 1); \ - err="$(php --version 3>&1 1>&2 2>&3)"; \ - [ -z "$err" ] || (echo "Sanity check failed: php returned errors; $err"; exit 1;); - - -# installto.sh dependencies -RUN set -ex; \ - \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - aspell \ - aspell-en \ - rsync \ - unzip \ - ; \ - rm -rf /var/lib/apt/lists/* - -# ... and composer.phar -COPY --from=composer:2 /usr/bin/composer /usr/bin/composer - -RUN a2enmod rewrite - -### Temporary build image -FROM base AS builder +### Temporary build container to use npm in. +FROM docker.io/roundcube/roundcubemail:latest-apache AS builder # install nodejs and lessc compiler -RUN apt-get -qq update; \ - apt-get install -y --no-install-recommends unzip gnupg dirmngr git; \ - curl -sL https://deb.nodesource.com/setup_20.x | bash -; \ - apt-get install -y nodejs; \ - npm install -g less; \ - npm install -g uglify-js; \ - npm install -g lessc; \ - npm install -g less-plugin-clean-css; \ - npm install -g csso-cli +RUN apt-get -qq update && apt-get install -y --no-install-recommends npm git # Download source and build package into src directory RUN set -ex; \ + rm -rf /usr/src/roundcubemail; \ curl -o roundcubemail.tar.gz -SL https://github.com/roundcube/roundcubemail/archive/master.tar.gz; \ tar -xzf roundcubemail.tar.gz -C /usr/src/; \ rm roundcubemail.tar.gz; \ mv /usr/src/roundcubemail-master /usr/src/roundcubemail; \ cd /usr/src/roundcubemail; \ rm -rf installer tests public_html .ci .github .gitignore .editorconfig .tx .travis.yml; \ - (cd /usr/src/roundcubemail/skins/elastic; \ - lessc --clean-css="--s1 --advanced" styles/styles.less > styles/styles.min.css; \ - lessc --clean-css="--s1 --advanced" styles/print.less > styles/print.css; \ - lessc --clean-css="--s1 --advanced" styles/embed.less > styles/embed.css); \ + make css-elastic; \ composer require kolab/net_ldap3 --no-install; \ composer require bjeavons/zxcvbn-php --no-install; \ composer install --no-dev --prefer-dist; \ @@ -120,20 +32,7 @@ RUN set -ex; \ temp/js_cache ### Final image -FROM base +FROM docker.io/roundcube/roundcubemail:latest-apache RUN mkdir -p /usr/src COPY --from=builder /usr/src/roundcubemail /usr/src/roundcubemail - -# include the wait-for-it.sh script -RUN curl -fL https://raw.githubusercontent.com/vishnubob/wait-for-it/master/wait-for-it.sh > /wait-for-it.sh && chmod +x /wait-for-it.sh - -# use custom PHP settings -COPY php.ini /usr/local/etc/php/conf.d/roundcube-defaults.ini - -COPY docker-entrypoint.sh / - -RUN mkdir -p /var/roundcube/config - -ENTRYPOINT ["/docker-entrypoint.sh"] -CMD ["apache2-foreground"] diff --git a/nightly/docker-entrypoint.sh b/nightly/docker-entrypoint.sh deleted file mode 100755 index f83a933..0000000 --- a/nightly/docker-entrypoint.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/bash -# set -ex - -# PWD=`pwd` - -if [[ "$1" == apache2* || "$1" == php-fpm || "$1" == bin* ]]; then - # docroot is empty - if ! [ -e index.php -a -e bin/installto.sh ]; then - echo >&2 "roundcubemail not found in $PWD - copying now..." - if [ "$(ls -A)" ]; then - echo >&2 "WARNING: $PWD is not empty - press Ctrl+C now if this is an error!" - ( set -x; ls -A; sleep 10 ) - fi - tar cf - --one-file-system -C /usr/src/roundcubemail . | tar xf - - echo >&2 "Complete! ROUNDCUBEMAIL has been successfully copied to $PWD" - # update Roundcube in docroot - else - INSTALLDIR=`pwd` - echo >&2 "roundcubemail found in $INSTALLDIR - installing update..." - (cd /usr/src/roundcubemail && bin/installto.sh -y $INSTALLDIR) - composer.phar update --no-dev - fi - - if [ -f /run/secrets/roundcube_db_user ]; then - ROUNDCUBEMAIL_DB_USER=`cat /run/secrets/roundcube_db_user` - fi - if [ -f /run/secrets/roundcube_db_password ]; then - ROUNDCUBEMAIL_DB_PASSWORD=`cat /run/secrets/roundcube_db_password` - fi - - if [ ! -z "${!POSTGRES_ENV_POSTGRES_*}" ] || [ "$ROUNDCUBEMAIL_DB_TYPE" == "pgsql" ]; then - : "${ROUNDCUBEMAIL_DB_TYPE:=pgsql}" - : "${ROUNDCUBEMAIL_DB_HOST:=postgres}" - : "${ROUNDCUBEMAIL_DB_PORT:=5432}" - : "${ROUNDCUBEMAIL_DB_USER:=${POSTGRES_ENV_POSTGRES_USER}}" - : "${ROUNDCUBEMAIL_DB_PASSWORD:=${POSTGRES_ENV_POSTGRES_PASSWORD}}" - : "${ROUNDCUBEMAIL_DB_NAME:=${POSTGRES_ENV_POSTGRES_DB:-roundcubemail}}" - : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}:${ROUNDCUBEMAIL_DB_PORT}/${ROUNDCUBEMAIL_DB_NAME}}" - - /wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:${ROUNDCUBEMAIL_DB_PORT} -t 30 - elif [ ! -z "${!MYSQL_ENV_MYSQL_*}" ] || [ "$ROUNDCUBEMAIL_DB_TYPE" == "mysql" ]; then - : "${ROUNDCUBEMAIL_DB_TYPE:=mysql}" - : "${ROUNDCUBEMAIL_DB_HOST:=mysql}" - : "${ROUNDCUBEMAIL_DB_PORT:=3306}" - : "${ROUNDCUBEMAIL_DB_USER:=${MYSQL_ENV_MYSQL_USER:-root}}" - if [ "$ROUNDCUBEMAIL_DB_USER" = 'root' ]; then - : "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_ROOT_PASSWORD}}" - else - : "${ROUNDCUBEMAIL_DB_PASSWORD:=${MYSQL_ENV_MYSQL_PASSWORD}}" - fi - : "${ROUNDCUBEMAIL_DB_NAME:=${MYSQL_ENV_MYSQL_DATABASE:-roundcubemail}}" - : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}://${ROUNDCUBEMAIL_DB_USER}:${ROUNDCUBEMAIL_DB_PASSWORD}@${ROUNDCUBEMAIL_DB_HOST}:${ROUNDCUBEMAIL_DB_PORT}/${ROUNDCUBEMAIL_DB_NAME}}" - - /wait-for-it.sh ${ROUNDCUBEMAIL_DB_HOST}:${ROUNDCUBEMAIL_DB_PORT} -t 30 - else - # use local SQLite DB in /var/roundcube/db - : "${ROUNDCUBEMAIL_DB_TYPE:=sqlite}" - : "${ROUNDCUBEMAIL_DB_DIR:=/var/roundcube/db}" - : "${ROUNDCUBEMAIL_DB_NAME:=sqlite}" - : "${ROUNDCUBEMAIL_DSNW:=${ROUNDCUBEMAIL_DB_TYPE}:///$ROUNDCUBEMAIL_DB_DIR/${ROUNDCUBEMAIL_DB_NAME}.db?mode=0646}" - - mkdir -p $ROUNDCUBEMAIL_DB_DIR - chown www-data:www-data $ROUNDCUBEMAIL_DB_DIR - fi - - : "${ROUNDCUBEMAIL_DEFAULT_HOST:=localhost}" - : "${ROUNDCUBEMAIL_DEFAULT_PORT:=143}" - : "${ROUNDCUBEMAIL_SMTP_SERVER:=localhost}" - : "${ROUNDCUBEMAIL_SMTP_PORT:=587}" - : "${ROUNDCUBEMAIL_PLUGINS:=archive,zipdownload}" - : "${ROUNDCUBEMAIL_SKIN:=elastic}" - : "${ROUNDCUBEMAIL_TEMP_DIR:=/tmp/roundcube-temp}" - - if [ ! -e config/config.inc.php ]; then - GENERATED_DES_KEY=`head /dev/urandom | base64 | head -c 24` - touch config/config.inc.php - - echo "Write root config to $PWD/config/config.inc.php" - echo " config/config.inc.php - - elif ! grep -q "config.docker.inc.php" config/config.inc.php; then - echo "include(__DIR__ . '/config.docker.inc.php');" >> config/config.inc.php - fi - - ROUNDCUBEMAIL_PLUGINS_PHP=`echo "${ROUNDCUBEMAIL_PLUGINS}" | sed -E "s/[, ]+/', '/g"` - echo "Write Docker config to $PWD/config/config.docker.inc.php" - echo " config/config.docker.inc.php - - if [ -e /run/secrets/roundcube_des_key ]; then - echo "\$config['des_key'] = file_get_contents('/run/secrets/roundcube_des_key');" >> config/config.docker.inc.php - elif [ ! -z "${ROUNDCUBEMAIL_DES_KEY}" ]; then - echo "\$config['des_key'] = getenv('ROUNDCUBEMAIL_DES_KEY');" >> config/config.docker.inc.php - fi - - # include custom config files - for fn in `ls /var/roundcube/config/*.php 2>/dev/null || true`; do - echo "include('$fn');" >> config/config.docker.inc.php - done - - # initialize or update DB - bin/initdb.sh --dir=$PWD/SQL --create || bin/updatedb.sh --dir=$PWD/SQL --package=roundcube || echo "Failed to initialize database. Please run $PWD/bin/initdb.sh and $PWD/bin/updatedb.sh manually." - - if [ ! -z "${ROUNDCUBEMAIL_TEMP_DIR}" ]; then - mkdir -p ${ROUNDCUBEMAIL_TEMP_DIR} && chown www-data ${ROUNDCUBEMAIL_TEMP_DIR} - fi - - if [ ! -z "${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}" ]; then - echo "upload_max_filesize=${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}" >> /usr/local/etc/php/conf.d/roundcube-override.ini - echo "post_max_size=${ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE}" >> /usr/local/etc/php/conf.d/roundcube-override.ini - fi - - : "${ROUNDCUBEMAIL_LOCALE:=en_US.UTF-8 UTF-8}" - - if [ -e /usr/sbin/locale-gen ] && [ ! -z "${ROUNDCUBEMAIL_LOCALE}" ]; then - echo "${ROUNDCUBEMAIL_LOCALE}" > /etc/locale.gen - /usr/sbin/locale-gen - fi -fi - -exec "$@" diff --git a/nightly/php.ini b/nightly/php.ini deleted file mode 100644 index 7b2147d..0000000 --- a/nightly/php.ini +++ /dev/null @@ -1,10 +0,0 @@ -memory_limit=64M -display_errors=Off -log_errors=On -upload_max_filesize=5M -post_max_size=6M -zlib.output_compression=Off -session.auto_start=Off -session.gc_maxlifetime=21600 -session.gc_divisor=500 -session.gc_probability=1