From 0c39c10f510b0d4a6650d646f808ffba6e223ff1 Mon Sep 17 00:00:00 2001 From: GHu14 Date: Wed, 9 Oct 2024 16:15:03 +0800 Subject: [PATCH 1/4] Add gnupg php module for michaelpage customer --- drupal-web/php8.1-fpm-apache-mp/.DS_Store | Bin 0 -> 6148 bytes drupal-web/php8.1-fpm-apache-mp/Dockerfile | 434 ++++++++++++++++++ .../php8.1-fpm-apache-mp/apache2-foreground | 40 ++ .../php8.1-fpm-apache-mp/config/php.ini | 15 + .../php8.1-fpm-apache-mp/config/rsyslog.conf | 7 + .../docker-php-entrypoint | 10 + .../docker-php-ext-configure | 69 +++ .../docker-php-ext-enable | 121 +++++ .../docker-php-ext-install | 124 +++++ .../php8.1-fpm-apache-mp/docker-php-source | 34 ++ 10 files changed, 854 insertions(+) create mode 100644 drupal-web/php8.1-fpm-apache-mp/.DS_Store create mode 100644 drupal-web/php8.1-fpm-apache-mp/Dockerfile create mode 100755 drupal-web/php8.1-fpm-apache-mp/apache2-foreground create mode 100644 drupal-web/php8.1-fpm-apache-mp/config/php.ini create mode 100644 drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf create mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint create mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure create mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable create mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install create mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-source diff --git a/drupal-web/php8.1-fpm-apache-mp/.DS_Store b/drupal-web/php8.1-fpm-apache-mp/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 /etc/apt/preferences.d/no-debian-php + +# dependencies required for running "phpize" +# (see persistent deps below) +ENV PHPIZE_DEPS \ + autoconf \ + dpkg-dev \ + file \ + g++ \ + gcc \ + libc-dev \ + make \ + pkg-config \ + re2c + +# persistent / runtime deps +RUN set -eux; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + $PHPIZE_DEPS \ + ca-certificates \ + curl \ + xz-utils \ + exim4; + +RUN groupadd -r -g 1001 docker && useradd --no-log-init -r -u 1000 -g docker docker + +ENV PHP_INI_DIR /usr/local/etc/php +RUN set -eux; \ + mkdir -p "$PHP_INI_DIR/conf.d"; \ +# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) + [ ! -d /var/www/html ]; \ + mkdir -p /var/www/html; \ + chown docker:docker /var/www/html; \ + chmod 777 /var/www/html + +# Install apache2 +ENV APACHE_CONFDIR /etc/apache2 +ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars + +RUN set -eux; \ + apt-get install -y --no-install-recommends apache2; \ + \ +# generically convert lines like +# export APACHE_RUN_USER=www-data +# into +# : ${APACHE_RUN_USER:=www-data} +# export APACHE_RUN_USER +# so that they can be overridden at runtime ("-e APACHE_RUN_USER=...") + sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' "$APACHE_ENVVARS"; \ + \ +# setup directories and permissions + . "$APACHE_ENVVARS"; \ + for dir in \ + "$APACHE_LOCK_DIR" \ + "$APACHE_RUN_DIR" \ + "$APACHE_LOG_DIR" \ + ; do \ + rm -rvf "$dir"; \ + mkdir -p "$dir"; \ + chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; \ +# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) + chmod 777 "$dir"; \ + done; \ + \ +# delete the "index.html" that installing Apache drops in here + rm -rvf /var/www/html/*; \ + \ +# logs should go to stdout / stderr + ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log"; \ + ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log"; \ + ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log"; \ + chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$APACHE_LOG_DIR" + +# Apache + PHP requires preforking Apache for best results +RUN a2enmod mpm_event && a2dismod mpm_prefork +RUN a2enmod proxy proxy_fcgi proxy_http + +# PHP files should be handled by PHP, and should be preferred over any other file type +RUN { \ + echo ''; \ + echo '\tSetHandler "proxy:fcgi://127.0.0.1:9000"'; \ +# echo '\tSetHandler "proxy:unix:/var/run/php7.4-fpm.sock|fcgi://localhost/"'; \ + echo ''; \ + echo; \ + echo 'DirectoryIndex disabled'; \ + echo 'DirectoryIndex index.php index.html'; \ + echo; \ + echo ''; \ + echo '\tOptions -Indexes'; \ + echo '\tAllowOverride All'; \ + echo ''; \ + } | tee "$APACHE_CONFDIR/conf-available/docker-php.conf" \ + && a2enconf docker-php + +ENV PHP_EXTRA_BUILD_DEPS apache2-dev +#ENV PHP_EXTRA_CONFIGURE_ARGS --with-apxs2 --disable-cgi +ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=docker --with-fpm-group=docker --disable-cgi + +# Apply stack smash protection to functions using local buffers and alloca() +# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64) +# Enable optimization (-O2) +# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default) +# https://github.com/docker-library/php/issues/272 +# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php) +ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" +ENV PHP_CPPFLAGS="$PHP_CFLAGS" +ENV PHP_LDFLAGS="-Wl,-O1 -pie" + +ENV GPG_KEYS 528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544 F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD + +ENV PHP_VERSION 8.1.8 +ENV PHP_URL="https://www.php.net/distributions/php-8.1.8.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.1.8.tar.xz.asc" +ENV PHP_SHA256="04c065515bc347bc68e0bb1ac7182669a98a731e4a17727e5731650ad3d8de4c" + +RUN set -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends gnupg dirmngr; \ + rm -rf /var/lib/apt/lists/*; \ + \ + mkdir -p /usr/src; \ + cd /usr/src; \ + \ + curl -fsSL -o php.tar.xz "$PHP_URL"; \ + \ + if [ -n "$PHP_SHA256" ]; then \ + echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \ + fi; \ + \ + if [ -n "$PHP_ASC_URL" ]; then \ + curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \ + export GNUPGHOME="$(mktemp -d)"; \ + for key in $GPG_KEYS; do \ + gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \ + done; \ + gpg --batch --verify php.tar.xz.asc php.tar.xz; \ + gpgconf --kill all; \ + rm -rf "$GNUPGHOME"; \ + fi; \ + \ + apt-mark auto '.*' > /dev/null; \ + apt-mark manual $savedAptMark > /dev/null; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false + +COPY docker-php-source /usr/local/bin/ + +RUN set -eux; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + libargon2-dev \ + libcurl4-openssl-dev \ + libonig-dev \ + libreadline-dev \ + libsodium-dev \ + libsqlite3-dev \ + libssl-dev \ + libxml2-dev \ + zlib1g-dev \ + ; \ + \ + export \ + CFLAGS="$PHP_CFLAGS" \ + CPPFLAGS="$PHP_CPPFLAGS" \ + LDFLAGS="$PHP_LDFLAGS" \ + ; \ + docker-php-source extract; \ + cd /usr/src/php; \ + gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ + debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ +# https://bugs.php.net/bug.php?id=74125 + if [ ! -d /usr/include/curl ]; then \ + ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \ + fi; \ + ./configure \ + --build="$gnuArch" \ + --with-config-file-path="$PHP_INI_DIR" \ + --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ + \ +# make sure invalid --configure-flags are fatal errors instead of just warnings + --enable-option-checking=fatal \ + \ +# https://github.com/docker-library/php/issues/439 + --with-mhash \ + \ +# https://github.com/docker-library/php/issues/822 + --with-pic \ + \ +# --enable-ftp is included here because ftp_ssl_connect() needs ftp to be compiled statically (see https://github.com/docker-library/php/issues/236) + --enable-ftp \ +# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195) + --enable-mbstring \ +# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself) + --enable-mysqlnd \ +# https://wiki.php.net/rfc/argon2_password_hash + --with-password-argon2 \ +# https://wiki.php.net/rfc/libsodium + --with-sodium=shared \ +# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109) + --with-pdo-sqlite=/usr \ + --with-sqlite3=/usr \ + \ + --with-curl \ + --with-iconv \ + --with-openssl \ + --with-readline \ + --with-zlib \ + \ +# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.") + --disable-phpdbg \ + \ +# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear") + --with-pear \ + \ +# bundled pcre does not support JIT on s390x +# https://manpages.debian.org/bullseye/libpcre3-dev/pcrejit.3.en.html#AVAILABILITY_OF_JIT_SUPPORT + $(test "$gnuArch" = 's390x-linux-gnu' && echo '--without-pcre-jit') \ + --with-libdir="lib/$debMultiarch" \ + \ + --disable-cgi \ + \ + --enable-fpm \ + --with-fpm-user=www-data \ + --with-fpm-group=www-data \ + ; \ + make -j "$(nproc)"; \ + find -type f -name '*.a' -delete; \ + make install; \ + find \ + /usr/local \ + -type f \ + -perm '/0111' \ + -exec sh -euxc ' \ + strip --strip-all "$@" || : \ + ' -- '{}' + \ + ; \ + make clean; \ + \ +# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable) + cp -v php.ini-* "$PHP_INI_DIR/"; \ + \ + cd /; \ + docker-php-source delete; \ + \ +# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \ + find /usr/local -type f -executable -exec ldd '{}' ';' \ + | awk '/=>/ { print $(NF-1) }' \ + | sort -u \ + | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -r apt-mark manual \ + ; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/*; \ + \ +# update pecl channel definitions https://github.com/docker-library/php/issues/443 + pecl update-channels; \ + rm -rf /tmp/pear ~/.pearrc; \ + \ +# smoke test + php --version + +COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/ + +# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598) +RUN docker-php-ext-enable sodium + +# temporary "freetype-config" workaround for https://github.com/docker-library/php/issues/865 (https://bugs.php.net/bug.php?id=76324) +RUN { echo '#!/bin/sh'; echo 'exec pkg-config "$@" freetype2'; } > /usr/local/bin/freetype-config && chmod +x /usr/local/bin/freetype-config + +ENTRYPOINT ["docker-php-entrypoint"] +# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop +STOPSIGNAL SIGWINCH + +COPY apache2-foreground /usr/local/bin/ +WORKDIR /var/www/html + +RUN set -eux; \ + cd /usr/local/etc; \ + if [ -d php-fpm.d ]; then \ + # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" + sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ + cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ + else \ + # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency + mkdir php-fpm.d; \ + cp php-fpm.conf.default php-fpm.d/www.conf; \ + { \ + echo '[global]'; \ + echo 'include=etc/php-fpm.d/*.conf'; \ + } | tee php-fpm.conf; \ + fi; \ + { \ + echo '[global]'; \ + echo 'error_log = /proc/self/fd/2'; \ + echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \ + echo; \ + echo '[www]'; \ + echo '; if we send this to /proc/self/fd/1, it never appears'; \ + echo 'access.log = /proc/self/fd/2'; \ + echo; \ + echo 'clear_env = no'; \ + echo; \ + echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ + echo 'catch_workers_output = yes'; \ + echo 'decorate_workers_output = no'; \ + } | tee php-fpm.d/docker.conf; \ + { \ + echo '[global]'; \ + echo 'daemonize = no'; \ + echo; \ + echo '[www]'; \ + echo 'listen = 9000'; \ +# echo 'listen = /var/run/php7.4-fpm.sock'; \ + echo 'listen.mode = 0666'; \ + } | tee php-fpm.d/zz-docker.conf + +# Override stop signal to stop process gracefully +# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163 +STOPSIGNAL SIGQUIT + +ENV DRUSH_VERSION 8.4.10 +ENV DRUSH_LAUNCHER_VERSION 0.10.1 +ENV DRUSH_LAUNCHER_FALLBACK "/usr/local/drush/drush" +ENV MEMCACHED_VERSION 3.1.5 + +# Install necessary packages and PHP extensions for both Drupal 8 +# Drupal 8 PHP requirement: https://www.drupal.org/docs/8/system-requirements/php-requirements +RUN a2enmod rewrite \ + && apt-get update && apt-get install -y --no-install-recommends \ + mariadb-client \ + libpng-dev \ + libjpeg62-turbo-dev \ + libfreetype6-dev \ + libpq-dev \ + libxml2-dev \ + nano \ + libmemcached-dev \ + rsyslog \ + zip \ + libzip-dev \ + libbz2-dev \ + libmagickwand-dev \ + libwebp-dev \ + && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp\ + && docker-php-ext-install -j "$(nproc)" gd \ + && docker-php-ext-configure zip \ + && docker-php-ext-install zip \ + && docker-php-ext-install bz2 \ + && docker-php-ext-install pdo pdo_mysql pdo_pgsql zip opcache sockets soap \ + # Install Intl PHP extension + && docker-php-ext-configure intl \ + && docker-php-ext-install intl \ + # Install Memcached PHP extension + && curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v$MEMCACHED_VERSION.tar.gz" \ + && mkdir -p /usr/src/php/ext/memcached \ + && tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ + && docker-php-ext-configure memcached \ + && docker-php-ext-install memcached \ + # Clean up + && rm /tmp/memcached.tar.gz \ + && apt-get clean && rm -rf /var/lib/apt/lists/* \ + # Configure Apache web docroot + && sed -i 's/\/var\/www\/html/\/var\/www\/html\/docroot/g' /etc/apache2/sites-available/000-default.conf \ + # Remove old Apache ServerTokens & ServerSignature + && sed -i "/^ServerTokens/d; /^ServerSignature/d" /etc/apache2/apache2.conf \ + # Add new Apache ServerTokens & ServerSignature + && echo 'ServerTokens Prod\nServerSignature Off' >> /etc/apache2/apache2.conf + +COPY config/php.ini /usr/local/etc/php/conf.d/ + +COPY config/rsyslog.conf /etc/rsyslog.conf + +# Install imagick +RUN printf "\n" | pecl install imagick +RUN docker-php-ext-enable imagick + +# Install apcu +RUN printf "\n" | pecl install apcu +RUN docker-php-ext-enable apcu +RUN pecl clear-cache + +# Install php gnupg +RUN set -eux; \ + apt-get update && apt-get install -y --no-install-recommends libgpgme11-dev +RUN printf "\n" | pecl install gnupg +RUN docker-php-ext-enable gnupg +RUN pecl clear-cache + +# Install new relic agent +RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-11.2.0.15-linux.tar.gz \ + && gzip -dc newrelic.tar.gz | tar xf - \ + && cd newrelic-php5-11.2.0.15-linux \ + && NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install \ + && rm -rf ../newrelic-php5-11.2.0.15-linux newrelic.tar.gz \ + && sed -i \ + -e 's/;newrelic.enabled =.*/newrelic.enabled = false/' \ + -e 's/;newrelic.daemon.dont_launch =.*/newrelic.daemon.dont_launch = 3/' \ + /usr/local/etc/php/conf.d/newrelic.ini + +# Add default user `docker` and modify user id and group id +RUN echo '#!/bin/bash\nset -e\n\ +[[ $(id -u docker) != ${CURRENT_USER_UID:-1000} ]] && usermod -u ${CURRENT_USER_UID:-1000} docker\n\ +[[ $(id -g docker) != ${CURRENT_USER_GID:-1001} ]] && groupmod -g ${CURRENT_USER_GID:-1001} docker\n\ +chown -R docker:docker /var/www/html\n\ +nohup rsyslogd -n -f /etc/rsyslog.conf &\n\ +service exim4 start\n\ +php-fpm -D\n\ +apache2-foreground' > /start.sh && chmod 755 /start.sh \ + # Install Drush + && mkdir -p /usr/local/drush \ + && curl -fsSL -o /usr/local/drush/drush "https://github.com/drush-ops/drush/releases/download/$DRUSH_VERSION/drush.phar" \ + && curl -fsSL -o /usr/local/bin/drush https://github.com/drush-ops/drush-launcher/releases/download/${DRUSH_LAUNCHER_VERSION}/drush.phar \ + && chmod +x /usr/local/drush/drush /usr/local/bin/drush \ + && drush --version + +EXPOSE 80 + +CMD ["/start.sh"] diff --git a/drupal-web/php8.1-fpm-apache-mp/apache2-foreground b/drupal-web/php8.1-fpm-apache-mp/apache2-foreground new file mode 100755 index 0000000..da04fbc --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/apache2-foreground @@ -0,0 +1,40 @@ +#!/bin/bash +set -e + +# Note: we don't just use "apache2ctl" here because it itself is just a shell-script wrapper around apache2 which provides extra functionality like "apache2ctl start" for launching apache2 in the background. +# (also, when run as "apache2ctl ", it does not use "exec", which leaves an undesirable resident shell process) + +: "${APACHE_CONFDIR:=/etc/apache2}" +: "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}" +if test -f "$APACHE_ENVVARS"; then + . "$APACHE_ENVVARS" +fi + +# Apache gets grumpy about PID files pre-existing +: "${APACHE_RUN_DIR:=/var/run/apache2}" +: "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}" +rm -f "$APACHE_PID_FILE" + +# create missing directories +# (especially APACHE_RUN_DIR, APACHE_LOCK_DIR, and APACHE_LOG_DIR) +for e in "${!APACHE_@}"; do + if [[ "$e" == *_DIR ]] && [[ "${!e}" == /* ]]; then + # handle "/var/lock" being a symlink to "/run/lock", but "/run/lock" not existing beforehand, so "/var/lock/something" fails to mkdir + # mkdir: cannot create directory '/var/lock': File exists + dir="${!e}" + while [ "$dir" != "$(dirname "$dir")" ]; do + dir="$(dirname "$dir")" + if [ -d "$dir" ]; then + break + fi + absDir="$(readlink -f "$dir" 2>/dev/null || :)" + if [ -n "$absDir" ]; then + mkdir -p "$absDir" + fi + done + + mkdir -p "${!e}" + fi +done + +exec apache2 -DFOREGROUND "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/config/php.ini b/drupal-web/php8.1-fpm-apache-mp/config/php.ini new file mode 100644 index 0000000..17b0f44 --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/config/php.ini @@ -0,0 +1,15 @@ +; Custom php configuration + +opcache.enable=1 +opcache.enable_cli=1 +opcache.fast_shutdown=1 +opcache.interned_strings_buffer=8 +opcache.memory_consumption=128 +opcache.max_accelerated_files=4000 +opcache_revalidate_freq = 60 +opcache.save_comments=1 + +upload_max_filesize = 50M +post_max_size = 50M +memory_limit = 512M +expose_php = off diff --git a/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf b/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf new file mode 100644 index 0000000..0504060 --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf @@ -0,0 +1,7 @@ +# http://www.rsyslog.com/doc/ + +module(load="imuxsock") # provides support for local system logging + +module(load="immark") # provide --MARK-- message capability + +*.* /dev/stdout; # send everything to stdout diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint b/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint new file mode 100755 index 0000000..20f2173 --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint @@ -0,0 +1,10 @@ +#!/bin/sh +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- php-fpm "$@" + set -- apache2-foreground "$@" +fi + +exec "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure new file mode 100755 index 0000000..41d1b26 --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure @@ -0,0 +1,69 @@ +#!/bin/sh +set -e + +# prefer user supplied CFLAGS, but default to our PHP_CFLAGS +: ${CFLAGS:=$PHP_CFLAGS} +: ${CPPFLAGS:=$PHP_CPPFLAGS} +: ${LDFLAGS:=$PHP_LDFLAGS} +export CFLAGS CPPFLAGS LDFLAGS + +srcExists= +if [ -d /usr/src/php ]; then + srcExists=1 +fi +docker-php-source extract +if [ -z "$srcExists" ]; then + touch /usr/src/php/.docker-delete-me +fi + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 ext-name [configure flags]" + echo " ie: $0 gd --with-jpeg-dir=/usr/local/something" + echo + echo 'Possible values for ext-name:' + find . \ + -mindepth 2 \ + -maxdepth 2 \ + -type f \ + -name 'config.m4' \ + | xargs -n1 dirname \ + | xargs -n1 basename \ + | sort \ + | xargs + echo + echo 'Some of the above modules are already compiled into PHP; please check' + echo 'the output of "php -i" to see which modules are already loaded.' +} + +ext="$1" +if [ -z "$ext" ] || [ ! -d "$ext" ]; then + usage >&2 + exit 1 +fi +shift + +pm='unknown' +if [ -e /lib/apk/db/installed ]; then + pm='apk' +fi + +if [ "$pm" = 'apk' ]; then + if \ + [ -n "$PHPIZE_DEPS" ] \ + && ! apk info --installed .phpize-deps > /dev/null \ + && ! apk info --installed .phpize-deps-configure > /dev/null \ + ; then + apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS + fi +fi + +if command -v dpkg-architecture > /dev/null; then + gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" + set -- --build="$gnuArch" "$@" +fi + +cd "$ext" +phpize +./configure --enable-option-checking=fatal "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable new file mode 100755 index 0000000..41d20bb --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable @@ -0,0 +1,121 @@ +#!/bin/sh +set -e + +extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')" +cd "$extDir" + +usage() { + echo "usage: $0 [options] module-name [module-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 --ini-name 0-apc.ini apcu apc" + echo + echo 'Possible values for module-name:' + find -maxdepth 1 \ + -type f \ + -name '*.so' \ + -exec basename '{}' ';' \ + | sort \ + | xargs + echo + echo 'Some of the above modules are already compiled into PHP; please check' + echo 'the output of "php -i" to see which modules are already loaded.' +} + +opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +iniName= +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --ini-name) iniName="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +modules= +for module; do + if [ -z "$module" ]; then + continue + fi + if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then + echo >&2 "error: '$module' does not exist" + echo >&2 + usage >&2 + exit 1 + fi + modules="$modules $module" +done + +if [ -z "$modules" ]; then + usage >&2 + exit 1 +fi + +pm='unknown' +if [ -e /lib/apk/db/installed ]; then + pm='apk' +fi + +apkDel= +if [ "$pm" = 'apk' ]; then + if \ + [ -n "$PHPIZE_DEPS" ] \ + && ! apk info --installed .phpize-deps > /dev/null \ + && ! apk info --installed .phpize-deps-configure > /dev/null \ + ; then + apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils + apkDel='.docker-php-ext-enable-deps' + fi +fi + +for module in $modules; do + moduleFile="$module" + if [ -f "$module.so" ] && ! [ -f "$module" ]; then + moduleFile="$module.so" + fi + if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then + # https://wiki.php.net/internals/extensions#loading_zend_extensions + line="zend_extension=$module" + else + line="extension=$module" + fi + + ext="$(basename "$module")" + ext="${ext%.*}" + if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then + # this isn't perfect, but it's better than nothing + # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') + echo >&2 + echo >&2 "warning: $ext ($module) is already loaded!" + echo >&2 + continue + fi + + case "$iniName" in + /*) + # allow an absolute path + ini="$iniName" + ;; + *) + ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}" + ;; + esac + if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then + echo "$line" >> "$ini" + fi +done + +if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then + apk del --no-network $apkDel +fi diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install new file mode 100755 index 0000000..67d2783 --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install @@ -0,0 +1,124 @@ +#!/bin/sh +set -e + +# prefer user supplied CFLAGS, but default to our PHP_CFLAGS +: ${CFLAGS:=$PHP_CFLAGS} +: ${CPPFLAGS:=$PHP_CPPFLAGS} +: ${LDFLAGS:=$PHP_LDFLAGS} +export CFLAGS CPPFLAGS LDFLAGS + +srcExists= +if [ -d /usr/src/php ]; then + srcExists=1 +fi +docker-php-source extract +if [ -z "$srcExists" ]; then + touch /usr/src/php/.docker-delete-me +fi + +cd /usr/src/php/ext + +usage() { + echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]" + echo " ie: $0 gd mysqli" + echo " $0 pdo pdo_mysql" + echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" + echo + echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' + echo + echo 'Possible values for ext-name:' + find . \ + -mindepth 2 \ + -maxdepth 2 \ + -type f \ + -name 'config.m4' \ + | xargs -n1 dirname \ + | xargs -n1 basename \ + | sort \ + | xargs + echo + echo 'Some of the above modules are already compiled into PHP; please check' + echo 'the output of "php -i" to see which modules are already loaded.' +} + +opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })" +eval set -- "$opts" + +j=1 +iniName= +while true; do + flag="$1" + shift + case "$flag" in + --help|-h|'-?') usage && exit 0 ;; + --ini-name) iniName="$1" && shift ;; + --jobs|-j) j="$1" && shift ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +exts= +for ext; do + if [ -z "$ext" ]; then + continue + fi + if [ ! -d "$ext" ]; then + echo >&2 "error: $PWD/$ext does not exist" + echo >&2 + usage >&2 + exit 1 + fi + exts="$exts $ext" +done + +if [ -z "$exts" ]; then + usage >&2 + exit 1 +fi + +pm='unknown' +if [ -e /lib/apk/db/installed ]; then + pm='apk' +fi + +apkDel= +if [ "$pm" = 'apk' ]; then + if [ -n "$PHPIZE_DEPS" ]; then + if apk info --installed .phpize-deps-configure > /dev/null; then + apkDel='.phpize-deps-configure' + elif ! apk info --installed .phpize-deps > /dev/null; then + apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS + apkDel='.phpize-deps' + fi + fi +fi + +popDir="$PWD" +for ext in $exts; do + cd "$ext" + [ -e Makefile ] || docker-php-ext-configure "$ext" + make -j"$j" + make -j"$j" install + find modules \ + -maxdepth 1 \ + -name '*.so' \ + -exec basename '{}' ';' \ + | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"} + make -j"$j" clean + cd "$popDir" +done + +if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then + apk del --no-network $apkDel +fi + +if [ -e /usr/src/php/.docker-delete-me ]; then + docker-php-source delete +fi \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-source b/drupal-web/php8.1-fpm-apache-mp/docker-php-source new file mode 100755 index 0000000..720d4ad --- /dev/null +++ b/drupal-web/php8.1-fpm-apache-mp/docker-php-source @@ -0,0 +1,34 @@ +#!/bin/sh +set -e + +dir=/usr/src/php + +usage() { + echo "usage: $0 COMMAND" + echo + echo "Manage php source tarball lifecycle." + echo + echo "Commands:" + echo " extract extract php source tarball into directory $dir if not already done." + echo " delete delete extracted php source located into $dir if not already done." + echo +} + +case "$1" in + extract) + mkdir -p "$dir" + if [ ! -f "$dir/.docker-extracted" ]; then + tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1 + touch "$dir/.docker-extracted" + fi + ;; + + delete) + rm -rf "$dir" + ;; + + *) + usage + exit 1 + ;; +esac \ No newline at end of file From ff63c458947bf8c4e692e28f39d0a3af10ef6368 Mon Sep 17 00:00:00 2001 From: GHu14 Date: Wed, 9 Oct 2024 16:26:11 +0800 Subject: [PATCH 2/4] Fix image tag --- drupal-web/php8.1-fpm-apache-mp/.DS_Store | Bin 6148 -> 0 bytes drupal-web/php8.1-fpm-apache-mp/Dockerfile | 434 ------------------ .../php8.1-fpm-apache-mp/apache2-foreground | 40 -- .../php8.1-fpm-apache-mp/config/php.ini | 15 - .../php8.1-fpm-apache-mp/config/rsyslog.conf | 7 - .../docker-php-entrypoint | 10 - .../docker-php-ext-configure | 69 --- .../docker-php-ext-enable | 121 ----- .../docker-php-ext-install | 124 ----- .../php8.1-fpm-apache-mp/docker-php-source | 34 -- drupal-web/php8.1-fpm-apache/Dockerfile | 13 +- 11 files changed, 10 insertions(+), 857 deletions(-) delete mode 100644 drupal-web/php8.1-fpm-apache-mp/.DS_Store delete mode 100644 drupal-web/php8.1-fpm-apache-mp/Dockerfile delete mode 100755 drupal-web/php8.1-fpm-apache-mp/apache2-foreground delete mode 100644 drupal-web/php8.1-fpm-apache-mp/config/php.ini delete mode 100644 drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf delete mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint delete mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure delete mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable delete mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install delete mode 100755 drupal-web/php8.1-fpm-apache-mp/docker-php-source diff --git a/drupal-web/php8.1-fpm-apache-mp/.DS_Store b/drupal-web/php8.1-fpm-apache-mp/.DS_Store deleted file mode 100644 index 5008ddfcf53c02e82d7eee2e57c38e5672ef89f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6148 zcmeH~Jr2S!425mzP>H1@V-^m;4Wg<&0T*E43hX&L&p$$qDprKhvt+--jT7}7np#A3 zem<@ulZcFPQ@L2!n>{z**++&mCkOWA81W14cNZlEfg7;MkzE(HCqgga^y>{tEnwC%0;vJ&^%eQ zLs35+`xjp>T0 /etc/apt/preferences.d/no-debian-php - -# dependencies required for running "phpize" -# (see persistent deps below) -ENV PHPIZE_DEPS \ - autoconf \ - dpkg-dev \ - file \ - g++ \ - gcc \ - libc-dev \ - make \ - pkg-config \ - re2c - -# persistent / runtime deps -RUN set -eux; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - $PHPIZE_DEPS \ - ca-certificates \ - curl \ - xz-utils \ - exim4; - -RUN groupadd -r -g 1001 docker && useradd --no-log-init -r -u 1000 -g docker docker - -ENV PHP_INI_DIR /usr/local/etc/php -RUN set -eux; \ - mkdir -p "$PHP_INI_DIR/conf.d"; \ -# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) - [ ! -d /var/www/html ]; \ - mkdir -p /var/www/html; \ - chown docker:docker /var/www/html; \ - chmod 777 /var/www/html - -# Install apache2 -ENV APACHE_CONFDIR /etc/apache2 -ENV APACHE_ENVVARS $APACHE_CONFDIR/envvars - -RUN set -eux; \ - apt-get install -y --no-install-recommends apache2; \ - \ -# generically convert lines like -# export APACHE_RUN_USER=www-data -# into -# : ${APACHE_RUN_USER:=www-data} -# export APACHE_RUN_USER -# so that they can be overridden at runtime ("-e APACHE_RUN_USER=...") - sed -ri 's/^export ([^=]+)=(.*)$/: ${\1:=\2}\nexport \1/' "$APACHE_ENVVARS"; \ - \ -# setup directories and permissions - . "$APACHE_ENVVARS"; \ - for dir in \ - "$APACHE_LOCK_DIR" \ - "$APACHE_RUN_DIR" \ - "$APACHE_LOG_DIR" \ - ; do \ - rm -rvf "$dir"; \ - mkdir -p "$dir"; \ - chown "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$dir"; \ -# allow running as an arbitrary user (https://github.com/docker-library/php/issues/743) - chmod 777 "$dir"; \ - done; \ - \ -# delete the "index.html" that installing Apache drops in here - rm -rvf /var/www/html/*; \ - \ -# logs should go to stdout / stderr - ln -sfT /dev/stderr "$APACHE_LOG_DIR/error.log"; \ - ln -sfT /dev/stdout "$APACHE_LOG_DIR/access.log"; \ - ln -sfT /dev/stdout "$APACHE_LOG_DIR/other_vhosts_access.log"; \ - chown -R --no-dereference "$APACHE_RUN_USER:$APACHE_RUN_GROUP" "$APACHE_LOG_DIR" - -# Apache + PHP requires preforking Apache for best results -RUN a2enmod mpm_event && a2dismod mpm_prefork -RUN a2enmod proxy proxy_fcgi proxy_http - -# PHP files should be handled by PHP, and should be preferred over any other file type -RUN { \ - echo ''; \ - echo '\tSetHandler "proxy:fcgi://127.0.0.1:9000"'; \ -# echo '\tSetHandler "proxy:unix:/var/run/php7.4-fpm.sock|fcgi://localhost/"'; \ - echo ''; \ - echo; \ - echo 'DirectoryIndex disabled'; \ - echo 'DirectoryIndex index.php index.html'; \ - echo; \ - echo ''; \ - echo '\tOptions -Indexes'; \ - echo '\tAllowOverride All'; \ - echo ''; \ - } | tee "$APACHE_CONFDIR/conf-available/docker-php.conf" \ - && a2enconf docker-php - -ENV PHP_EXTRA_BUILD_DEPS apache2-dev -#ENV PHP_EXTRA_CONFIGURE_ARGS --with-apxs2 --disable-cgi -ENV PHP_EXTRA_CONFIGURE_ARGS --enable-fpm --with-fpm-user=docker --with-fpm-group=docker --disable-cgi - -# Apply stack smash protection to functions using local buffers and alloca() -# Make PHP's main executable position-independent (improves ASLR security mechanism, and has no performance impact on x86_64) -# Enable optimization (-O2) -# Enable linker optimization (this sorts the hash buckets to improve cache locality, and is non-default) -# https://github.com/docker-library/php/issues/272 -# -D_LARGEFILE_SOURCE and -D_FILE_OFFSET_BITS=64 (https://www.php.net/manual/en/intro.filesystem.php) -ENV PHP_CFLAGS="-fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64" -ENV PHP_CPPFLAGS="$PHP_CFLAGS" -ENV PHP_LDFLAGS="-Wl,-O1 -pie" - -ENV GPG_KEYS 528995BFEDFBA7191D46839EF9BA0ADA31CBD89E 39B641343D8C104B2B146DC3F9C39DC0B9698544 F1F692238FBC1666E5A5CCD4199F9DFEF6FFBAFD - -ENV PHP_VERSION 8.1.8 -ENV PHP_URL="https://www.php.net/distributions/php-8.1.8.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.1.8.tar.xz.asc" -ENV PHP_SHA256="04c065515bc347bc68e0bb1ac7182669a98a731e4a17727e5731650ad3d8de4c" - -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends gnupg dirmngr; \ - rm -rf /var/lib/apt/lists/*; \ - \ - mkdir -p /usr/src; \ - cd /usr/src; \ - \ - curl -fsSL -o php.tar.xz "$PHP_URL"; \ - \ - if [ -n "$PHP_SHA256" ]; then \ - echo "$PHP_SHA256 *php.tar.xz" | sha256sum -c -; \ - fi; \ - \ - if [ -n "$PHP_ASC_URL" ]; then \ - curl -fsSL -o php.tar.xz.asc "$PHP_ASC_URL"; \ - export GNUPGHOME="$(mktemp -d)"; \ - for key in $GPG_KEYS; do \ - gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \ - done; \ - gpg --batch --verify php.tar.xz.asc php.tar.xz; \ - gpgconf --kill all; \ - rm -rf "$GNUPGHOME"; \ - fi; \ - \ - apt-mark auto '.*' > /dev/null; \ - apt-mark manual $savedAptMark > /dev/null; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false - -COPY docker-php-source /usr/local/bin/ - -RUN set -eux; \ - \ - savedAptMark="$(apt-mark showmanual)"; \ - apt-get update; \ - apt-get install -y --no-install-recommends \ - libargon2-dev \ - libcurl4-openssl-dev \ - libonig-dev \ - libreadline-dev \ - libsodium-dev \ - libsqlite3-dev \ - libssl-dev \ - libxml2-dev \ - zlib1g-dev \ - ; \ - \ - export \ - CFLAGS="$PHP_CFLAGS" \ - CPPFLAGS="$PHP_CPPFLAGS" \ - LDFLAGS="$PHP_LDFLAGS" \ - ; \ - docker-php-source extract; \ - cd /usr/src/php; \ - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)"; \ - debMultiarch="$(dpkg-architecture --query DEB_BUILD_MULTIARCH)"; \ -# https://bugs.php.net/bug.php?id=74125 - if [ ! -d /usr/include/curl ]; then \ - ln -sT "/usr/include/$debMultiarch/curl" /usr/local/include/curl; \ - fi; \ - ./configure \ - --build="$gnuArch" \ - --with-config-file-path="$PHP_INI_DIR" \ - --with-config-file-scan-dir="$PHP_INI_DIR/conf.d" \ - \ -# make sure invalid --configure-flags are fatal errors instead of just warnings - --enable-option-checking=fatal \ - \ -# https://github.com/docker-library/php/issues/439 - --with-mhash \ - \ -# https://github.com/docker-library/php/issues/822 - --with-pic \ - \ -# --enable-ftp is included here because ftp_ssl_connect() needs ftp to be compiled statically (see https://github.com/docker-library/php/issues/236) - --enable-ftp \ -# --enable-mbstring is included here because otherwise there's no way to get pecl to use it properly (see https://github.com/docker-library/php/issues/195) - --enable-mbstring \ -# --enable-mysqlnd is included here because it's harder to compile after the fact than extensions are (since it's a plugin for several extensions, not an extension in itself) - --enable-mysqlnd \ -# https://wiki.php.net/rfc/argon2_password_hash - --with-password-argon2 \ -# https://wiki.php.net/rfc/libsodium - --with-sodium=shared \ -# always build against system sqlite3 (https://github.com/php/php-src/commit/6083a387a81dbbd66d6316a3a12a63f06d5f7109) - --with-pdo-sqlite=/usr \ - --with-sqlite3=/usr \ - \ - --with-curl \ - --with-iconv \ - --with-openssl \ - --with-readline \ - --with-zlib \ - \ -# https://github.com/bwoebi/phpdbg-docs/issues/1#issuecomment-163872806 ("phpdbg is primarily a CLI debugger, and is not suitable for debugging an fpm stack.") - --disable-phpdbg \ - \ -# in PHP 7.4+, the pecl/pear installers are officially deprecated (requiring an explicit "--with-pear") - --with-pear \ - \ -# bundled pcre does not support JIT on s390x -# https://manpages.debian.org/bullseye/libpcre3-dev/pcrejit.3.en.html#AVAILABILITY_OF_JIT_SUPPORT - $(test "$gnuArch" = 's390x-linux-gnu' && echo '--without-pcre-jit') \ - --with-libdir="lib/$debMultiarch" \ - \ - --disable-cgi \ - \ - --enable-fpm \ - --with-fpm-user=www-data \ - --with-fpm-group=www-data \ - ; \ - make -j "$(nproc)"; \ - find -type f -name '*.a' -delete; \ - make install; \ - find \ - /usr/local \ - -type f \ - -perm '/0111' \ - -exec sh -euxc ' \ - strip --strip-all "$@" || : \ - ' -- '{}' + \ - ; \ - make clean; \ - \ -# https://github.com/docker-library/php/issues/692 (copy default example "php.ini" files somewhere easily discoverable) - cp -v php.ini-* "$PHP_INI_DIR/"; \ - \ - cd /; \ - docker-php-source delete; \ - \ -# reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies - apt-mark auto '.*' > /dev/null; \ - [ -z "$savedAptMark" ] || apt-mark manual $savedAptMark; \ - find /usr/local -type f -executable -exec ldd '{}' ';' \ - | awk '/=>/ { print $(NF-1) }' \ - | sort -u \ - | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -r apt-mark manual \ - ; \ - apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ - rm -rf /var/lib/apt/lists/*; \ - \ -# update pecl channel definitions https://github.com/docker-library/php/issues/443 - pecl update-channels; \ - rm -rf /tmp/pear ~/.pearrc; \ - \ -# smoke test - php --version - -COPY docker-php-ext-* docker-php-entrypoint /usr/local/bin/ - -# sodium was built as a shared module (so that it can be replaced later if so desired), so let's enable it too (https://github.com/docker-library/php/issues/598) -RUN docker-php-ext-enable sodium - -# temporary "freetype-config" workaround for https://github.com/docker-library/php/issues/865 (https://bugs.php.net/bug.php?id=76324) -RUN { echo '#!/bin/sh'; echo 'exec pkg-config "$@" freetype2'; } > /usr/local/bin/freetype-config && chmod +x /usr/local/bin/freetype-config - -ENTRYPOINT ["docker-php-entrypoint"] -# https://httpd.apache.org/docs/2.4/stopping.html#gracefulstop -STOPSIGNAL SIGWINCH - -COPY apache2-foreground /usr/local/bin/ -WORKDIR /var/www/html - -RUN set -eux; \ - cd /usr/local/etc; \ - if [ -d php-fpm.d ]; then \ - # for some reason, upstream's php-fpm.conf.default has "include=NONE/etc/php-fpm.d/*.conf" - sed 's!=NONE/!=!g' php-fpm.conf.default | tee php-fpm.conf > /dev/null; \ - cp php-fpm.d/www.conf.default php-fpm.d/www.conf; \ - else \ - # PHP 5.x doesn't use "include=" by default, so we'll create our own simple config that mimics PHP 7+ for consistency - mkdir php-fpm.d; \ - cp php-fpm.conf.default php-fpm.d/www.conf; \ - { \ - echo '[global]'; \ - echo 'include=etc/php-fpm.d/*.conf'; \ - } | tee php-fpm.conf; \ - fi; \ - { \ - echo '[global]'; \ - echo 'error_log = /proc/self/fd/2'; \ - echo; echo '; https://github.com/docker-library/php/pull/725#issuecomment-443540114'; echo 'log_limit = 8192'; \ - echo; \ - echo '[www]'; \ - echo '; if we send this to /proc/self/fd/1, it never appears'; \ - echo 'access.log = /proc/self/fd/2'; \ - echo; \ - echo 'clear_env = no'; \ - echo; \ - echo '; Ensure worker stdout and stderr are sent to the main error log.'; \ - echo 'catch_workers_output = yes'; \ - echo 'decorate_workers_output = no'; \ - } | tee php-fpm.d/docker.conf; \ - { \ - echo '[global]'; \ - echo 'daemonize = no'; \ - echo; \ - echo '[www]'; \ - echo 'listen = 9000'; \ -# echo 'listen = /var/run/php7.4-fpm.sock'; \ - echo 'listen.mode = 0666'; \ - } | tee php-fpm.d/zz-docker.conf - -# Override stop signal to stop process gracefully -# https://github.com/php/php-src/blob/17baa87faddc2550def3ae7314236826bc1b1398/sapi/fpm/php-fpm.8.in#L163 -STOPSIGNAL SIGQUIT - -ENV DRUSH_VERSION 8.4.10 -ENV DRUSH_LAUNCHER_VERSION 0.10.1 -ENV DRUSH_LAUNCHER_FALLBACK "/usr/local/drush/drush" -ENV MEMCACHED_VERSION 3.1.5 - -# Install necessary packages and PHP extensions for both Drupal 8 -# Drupal 8 PHP requirement: https://www.drupal.org/docs/8/system-requirements/php-requirements -RUN a2enmod rewrite \ - && apt-get update && apt-get install -y --no-install-recommends \ - mariadb-client \ - libpng-dev \ - libjpeg62-turbo-dev \ - libfreetype6-dev \ - libpq-dev \ - libxml2-dev \ - nano \ - libmemcached-dev \ - rsyslog \ - zip \ - libzip-dev \ - libbz2-dev \ - libmagickwand-dev \ - libwebp-dev \ - && docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp\ - && docker-php-ext-install -j "$(nproc)" gd \ - && docker-php-ext-configure zip \ - && docker-php-ext-install zip \ - && docker-php-ext-install bz2 \ - && docker-php-ext-install pdo pdo_mysql pdo_pgsql zip opcache sockets soap \ - # Install Intl PHP extension - && docker-php-ext-configure intl \ - && docker-php-ext-install intl \ - # Install Memcached PHP extension - && curl -L -o /tmp/memcached.tar.gz "https://github.com/php-memcached-dev/php-memcached/archive/v$MEMCACHED_VERSION.tar.gz" \ - && mkdir -p /usr/src/php/ext/memcached \ - && tar -C /usr/src/php/ext/memcached -zxvf /tmp/memcached.tar.gz --strip 1 \ - && docker-php-ext-configure memcached \ - && docker-php-ext-install memcached \ - # Clean up - && rm /tmp/memcached.tar.gz \ - && apt-get clean && rm -rf /var/lib/apt/lists/* \ - # Configure Apache web docroot - && sed -i 's/\/var\/www\/html/\/var\/www\/html\/docroot/g' /etc/apache2/sites-available/000-default.conf \ - # Remove old Apache ServerTokens & ServerSignature - && sed -i "/^ServerTokens/d; /^ServerSignature/d" /etc/apache2/apache2.conf \ - # Add new Apache ServerTokens & ServerSignature - && echo 'ServerTokens Prod\nServerSignature Off' >> /etc/apache2/apache2.conf - -COPY config/php.ini /usr/local/etc/php/conf.d/ - -COPY config/rsyslog.conf /etc/rsyslog.conf - -# Install imagick -RUN printf "\n" | pecl install imagick -RUN docker-php-ext-enable imagick - -# Install apcu -RUN printf "\n" | pecl install apcu -RUN docker-php-ext-enable apcu -RUN pecl clear-cache - -# Install php gnupg -RUN set -eux; \ - apt-get update && apt-get install -y --no-install-recommends libgpgme11-dev -RUN printf "\n" | pecl install gnupg -RUN docker-php-ext-enable gnupg -RUN pecl clear-cache - -# Install new relic agent -RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-11.2.0.15-linux.tar.gz \ - && gzip -dc newrelic.tar.gz | tar xf - \ - && cd newrelic-php5-11.2.0.15-linux \ - && NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install \ - && rm -rf ../newrelic-php5-11.2.0.15-linux newrelic.tar.gz \ - && sed -i \ - -e 's/;newrelic.enabled =.*/newrelic.enabled = false/' \ - -e 's/;newrelic.daemon.dont_launch =.*/newrelic.daemon.dont_launch = 3/' \ - /usr/local/etc/php/conf.d/newrelic.ini - -# Add default user `docker` and modify user id and group id -RUN echo '#!/bin/bash\nset -e\n\ -[[ $(id -u docker) != ${CURRENT_USER_UID:-1000} ]] && usermod -u ${CURRENT_USER_UID:-1000} docker\n\ -[[ $(id -g docker) != ${CURRENT_USER_GID:-1001} ]] && groupmod -g ${CURRENT_USER_GID:-1001} docker\n\ -chown -R docker:docker /var/www/html\n\ -nohup rsyslogd -n -f /etc/rsyslog.conf &\n\ -service exim4 start\n\ -php-fpm -D\n\ -apache2-foreground' > /start.sh && chmod 755 /start.sh \ - # Install Drush - && mkdir -p /usr/local/drush \ - && curl -fsSL -o /usr/local/drush/drush "https://github.com/drush-ops/drush/releases/download/$DRUSH_VERSION/drush.phar" \ - && curl -fsSL -o /usr/local/bin/drush https://github.com/drush-ops/drush-launcher/releases/download/${DRUSH_LAUNCHER_VERSION}/drush.phar \ - && chmod +x /usr/local/drush/drush /usr/local/bin/drush \ - && drush --version - -EXPOSE 80 - -CMD ["/start.sh"] diff --git a/drupal-web/php8.1-fpm-apache-mp/apache2-foreground b/drupal-web/php8.1-fpm-apache-mp/apache2-foreground deleted file mode 100755 index da04fbc..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/apache2-foreground +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash -set -e - -# Note: we don't just use "apache2ctl" here because it itself is just a shell-script wrapper around apache2 which provides extra functionality like "apache2ctl start" for launching apache2 in the background. -# (also, when run as "apache2ctl ", it does not use "exec", which leaves an undesirable resident shell process) - -: "${APACHE_CONFDIR:=/etc/apache2}" -: "${APACHE_ENVVARS:=$APACHE_CONFDIR/envvars}" -if test -f "$APACHE_ENVVARS"; then - . "$APACHE_ENVVARS" -fi - -# Apache gets grumpy about PID files pre-existing -: "${APACHE_RUN_DIR:=/var/run/apache2}" -: "${APACHE_PID_FILE:=$APACHE_RUN_DIR/apache2.pid}" -rm -f "$APACHE_PID_FILE" - -# create missing directories -# (especially APACHE_RUN_DIR, APACHE_LOCK_DIR, and APACHE_LOG_DIR) -for e in "${!APACHE_@}"; do - if [[ "$e" == *_DIR ]] && [[ "${!e}" == /* ]]; then - # handle "/var/lock" being a symlink to "/run/lock", but "/run/lock" not existing beforehand, so "/var/lock/something" fails to mkdir - # mkdir: cannot create directory '/var/lock': File exists - dir="${!e}" - while [ "$dir" != "$(dirname "$dir")" ]; do - dir="$(dirname "$dir")" - if [ -d "$dir" ]; then - break - fi - absDir="$(readlink -f "$dir" 2>/dev/null || :)" - if [ -n "$absDir" ]; then - mkdir -p "$absDir" - fi - done - - mkdir -p "${!e}" - fi -done - -exec apache2 -DFOREGROUND "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/config/php.ini b/drupal-web/php8.1-fpm-apache-mp/config/php.ini deleted file mode 100644 index 17b0f44..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/config/php.ini +++ /dev/null @@ -1,15 +0,0 @@ -; Custom php configuration - -opcache.enable=1 -opcache.enable_cli=1 -opcache.fast_shutdown=1 -opcache.interned_strings_buffer=8 -opcache.memory_consumption=128 -opcache.max_accelerated_files=4000 -opcache_revalidate_freq = 60 -opcache.save_comments=1 - -upload_max_filesize = 50M -post_max_size = 50M -memory_limit = 512M -expose_php = off diff --git a/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf b/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf deleted file mode 100644 index 0504060..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/config/rsyslog.conf +++ /dev/null @@ -1,7 +0,0 @@ -# http://www.rsyslog.com/doc/ - -module(load="imuxsock") # provides support for local system logging - -module(load="immark") # provide --MARK-- message capability - -*.* /dev/stdout; # send everything to stdout diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint b/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint deleted file mode 100755 index 20f2173..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/docker-php-entrypoint +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/sh -set -e - -# first arg is `-f` or `--some-option` -if [ "${1#-}" != "$1" ]; then - set -- php-fpm "$@" - set -- apache2-foreground "$@" -fi - -exec "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure deleted file mode 100755 index 41d1b26..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-configure +++ /dev/null @@ -1,69 +0,0 @@ -#!/bin/sh -set -e - -# prefer user supplied CFLAGS, but default to our PHP_CFLAGS -: ${CFLAGS:=$PHP_CFLAGS} -: ${CPPFLAGS:=$PHP_CPPFLAGS} -: ${LDFLAGS:=$PHP_LDFLAGS} -export CFLAGS CPPFLAGS LDFLAGS - -srcExists= -if [ -d /usr/src/php ]; then - srcExists=1 -fi -docker-php-source extract -if [ -z "$srcExists" ]; then - touch /usr/src/php/.docker-delete-me -fi - -cd /usr/src/php/ext - -usage() { - echo "usage: $0 ext-name [configure flags]" - echo " ie: $0 gd --with-jpeg-dir=/usr/local/something" - echo - echo 'Possible values for ext-name:' - find . \ - -mindepth 2 \ - -maxdepth 2 \ - -type f \ - -name 'config.m4' \ - | xargs -n1 dirname \ - | xargs -n1 basename \ - | sort \ - | xargs - echo - echo 'Some of the above modules are already compiled into PHP; please check' - echo 'the output of "php -i" to see which modules are already loaded.' -} - -ext="$1" -if [ -z "$ext" ] || [ ! -d "$ext" ]; then - usage >&2 - exit 1 -fi -shift - -pm='unknown' -if [ -e /lib/apk/db/installed ]; then - pm='apk' -fi - -if [ "$pm" = 'apk' ]; then - if \ - [ -n "$PHPIZE_DEPS" ] \ - && ! apk info --installed .phpize-deps > /dev/null \ - && ! apk info --installed .phpize-deps-configure > /dev/null \ - ; then - apk add --no-cache --virtual .phpize-deps-configure $PHPIZE_DEPS - fi -fi - -if command -v dpkg-architecture > /dev/null; then - gnuArch="$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)" - set -- --build="$gnuArch" "$@" -fi - -cd "$ext" -phpize -./configure --enable-option-checking=fatal "$@" \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable deleted file mode 100755 index 41d20bb..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-enable +++ /dev/null @@ -1,121 +0,0 @@ -#!/bin/sh -set -e - -extDir="$(php -d 'display_errors=stderr' -r 'echo ini_get("extension_dir");')" -cd "$extDir" - -usage() { - echo "usage: $0 [options] module-name [module-name ...]" - echo " ie: $0 gd mysqli" - echo " $0 pdo pdo_mysql" - echo " $0 --ini-name 0-apc.ini apcu apc" - echo - echo 'Possible values for module-name:' - find -maxdepth 1 \ - -type f \ - -name '*.so' \ - -exec basename '{}' ';' \ - | sort \ - | xargs - echo - echo 'Some of the above modules are already compiled into PHP; please check' - echo 'the output of "php -i" to see which modules are already loaded.' -} - -opts="$(getopt -o 'h?' --long 'help,ini-name:' -- "$@" || { usage >&2 && false; })" -eval set -- "$opts" - -iniName= -while true; do - flag="$1" - shift - case "$flag" in - --help|-h|'-?') usage && exit 0 ;; - --ini-name) iniName="$1" && shift ;; - --) break ;; - *) - { - echo "error: unknown flag: $flag" - usage - } >&2 - exit 1 - ;; - esac -done - -modules= -for module; do - if [ -z "$module" ]; then - continue - fi - if ! [ -f "$module" ] && ! [ -f "$module.so" ]; then - echo >&2 "error: '$module' does not exist" - echo >&2 - usage >&2 - exit 1 - fi - modules="$modules $module" -done - -if [ -z "$modules" ]; then - usage >&2 - exit 1 -fi - -pm='unknown' -if [ -e /lib/apk/db/installed ]; then - pm='apk' -fi - -apkDel= -if [ "$pm" = 'apk' ]; then - if \ - [ -n "$PHPIZE_DEPS" ] \ - && ! apk info --installed .phpize-deps > /dev/null \ - && ! apk info --installed .phpize-deps-configure > /dev/null \ - ; then - apk add --no-cache --virtual '.docker-php-ext-enable-deps' binutils - apkDel='.docker-php-ext-enable-deps' - fi -fi - -for module in $modules; do - moduleFile="$module" - if [ -f "$module.so" ] && ! [ -f "$module" ]; then - moduleFile="$module.so" - fi - if readelf --wide --syms "$moduleFile" | grep -q ' zend_extension_entry$'; then - # https://wiki.php.net/internals/extensions#loading_zend_extensions - line="zend_extension=$module" - else - line="extension=$module" - fi - - ext="$(basename "$module")" - ext="${ext%.*}" - if php -d 'display_errors=stderr' -r 'exit(extension_loaded("'"$ext"'") ? 0 : 1);'; then - # this isn't perfect, but it's better than nothing - # (for example, 'opcache.so' presents inside PHP as 'Zend OPcache', not 'opcache') - echo >&2 - echo >&2 "warning: $ext ($module) is already loaded!" - echo >&2 - continue - fi - - case "$iniName" in - /*) - # allow an absolute path - ini="$iniName" - ;; - *) - ini="$PHP_INI_DIR/conf.d/${iniName:-"docker-php-ext-$ext.ini"}" - ;; - esac - if ! grep -qFx -e "$line" -e "$line.so" "$ini" 2>/dev/null; then - echo "$line" >> "$ini" - fi -done - -if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then - apk del --no-network $apkDel -fi diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install b/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install deleted file mode 100755 index 67d2783..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/docker-php-ext-install +++ /dev/null @@ -1,124 +0,0 @@ -#!/bin/sh -set -e - -# prefer user supplied CFLAGS, but default to our PHP_CFLAGS -: ${CFLAGS:=$PHP_CFLAGS} -: ${CPPFLAGS:=$PHP_CPPFLAGS} -: ${LDFLAGS:=$PHP_LDFLAGS} -export CFLAGS CPPFLAGS LDFLAGS - -srcExists= -if [ -d /usr/src/php ]; then - srcExists=1 -fi -docker-php-source extract -if [ -z "$srcExists" ]; then - touch /usr/src/php/.docker-delete-me -fi - -cd /usr/src/php/ext - -usage() { - echo "usage: $0 [-jN] [--ini-name file.ini] ext-name [ext-name ...]" - echo " ie: $0 gd mysqli" - echo " $0 pdo pdo_mysql" - echo " $0 -j5 gd mbstring mysqli pdo pdo_mysql shmop" - echo - echo 'if custom ./configure arguments are necessary, see docker-php-ext-configure' - echo - echo 'Possible values for ext-name:' - find . \ - -mindepth 2 \ - -maxdepth 2 \ - -type f \ - -name 'config.m4' \ - | xargs -n1 dirname \ - | xargs -n1 basename \ - | sort \ - | xargs - echo - echo 'Some of the above modules are already compiled into PHP; please check' - echo 'the output of "php -i" to see which modules are already loaded.' -} - -opts="$(getopt -o 'h?j:' --long 'help,ini-name:,jobs:' -- "$@" || { usage >&2 && false; })" -eval set -- "$opts" - -j=1 -iniName= -while true; do - flag="$1" - shift - case "$flag" in - --help|-h|'-?') usage && exit 0 ;; - --ini-name) iniName="$1" && shift ;; - --jobs|-j) j="$1" && shift ;; - --) break ;; - *) - { - echo "error: unknown flag: $flag" - usage - } >&2 - exit 1 - ;; - esac -done - -exts= -for ext; do - if [ -z "$ext" ]; then - continue - fi - if [ ! -d "$ext" ]; then - echo >&2 "error: $PWD/$ext does not exist" - echo >&2 - usage >&2 - exit 1 - fi - exts="$exts $ext" -done - -if [ -z "$exts" ]; then - usage >&2 - exit 1 -fi - -pm='unknown' -if [ -e /lib/apk/db/installed ]; then - pm='apk' -fi - -apkDel= -if [ "$pm" = 'apk' ]; then - if [ -n "$PHPIZE_DEPS" ]; then - if apk info --installed .phpize-deps-configure > /dev/null; then - apkDel='.phpize-deps-configure' - elif ! apk info --installed .phpize-deps > /dev/null; then - apk add --no-cache --virtual .phpize-deps $PHPIZE_DEPS - apkDel='.phpize-deps' - fi - fi -fi - -popDir="$PWD" -for ext in $exts; do - cd "$ext" - [ -e Makefile ] || docker-php-ext-configure "$ext" - make -j"$j" - make -j"$j" install - find modules \ - -maxdepth 1 \ - -name '*.so' \ - -exec basename '{}' ';' \ - | xargs -r docker-php-ext-enable ${iniName:+--ini-name "$iniName"} - make -j"$j" clean - cd "$popDir" -done - -if [ "$pm" = 'apk' ] && [ -n "$apkDel" ]; then - apk del --no-network $apkDel -fi - -if [ -e /usr/src/php/.docker-delete-me ]; then - docker-php-source delete -fi \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache-mp/docker-php-source b/drupal-web/php8.1-fpm-apache-mp/docker-php-source deleted file mode 100755 index 720d4ad..0000000 --- a/drupal-web/php8.1-fpm-apache-mp/docker-php-source +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/sh -set -e - -dir=/usr/src/php - -usage() { - echo "usage: $0 COMMAND" - echo - echo "Manage php source tarball lifecycle." - echo - echo "Commands:" - echo " extract extract php source tarball into directory $dir if not already done." - echo " delete delete extracted php source located into $dir if not already done." - echo -} - -case "$1" in - extract) - mkdir -p "$dir" - if [ ! -f "$dir/.docker-extracted" ]; then - tar -Jxf /usr/src/php.tar.xz -C "$dir" --strip-components=1 - touch "$dir/.docker-extracted" - fi - ;; - - delete) - rm -rf "$dir" - ;; - - *) - usage - exit 1 - ;; -esac \ No newline at end of file diff --git a/drupal-web/php8.1-fpm-apache/Dockerfile b/drupal-web/php8.1-fpm-apache/Dockerfile index ba81cee..a7b3dd2 100644 --- a/drupal-web/php8.1-fpm-apache/Dockerfile +++ b/drupal-web/php8.1-fpm-apache/Dockerfile @@ -395,12 +395,19 @@ RUN printf "\n" | pecl install apcu RUN docker-php-ext-enable apcu RUN pecl clear-cache +# Install php gnupg +RUN set -eux; \ + apt-get update && apt-get install -y --no-install-recommends libgpgme11-dev +RUN printf "\n" | pecl install gnupg +RUN docker-php-ext-enable gnupg +RUN pecl clear-cache + # Install new relic agent -RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-10.11.0.3-linux.tar.gz \ +RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-11.2.0.15-linux.tar.gz \ && gzip -dc newrelic.tar.gz | tar xf - \ - && cd newrelic-php5-10.11.0.3-linux \ + && cd newrelic-php5-11.2.0.15-linux \ && NR_INSTALL_USE_CP_NOT_LN=1 NR_INSTALL_SILENT=1 ./newrelic-install install \ - && rm -rf ../newrelic-php5-10.11.0.3-linux newrelic.tar.gz \ + && rm -rf ../newrelic-php5-11.2.0.15-linux newrelic.tar.gz \ && sed -i \ -e 's/;newrelic.enabled =.*/newrelic.enabled = false/' \ -e 's/;newrelic.daemon.dont_launch =.*/newrelic.daemon.dont_launch = 3/' \ From 514b8baf2903103f280cddbba0b908e109f6c07d Mon Sep 17 00:00:00 2001 From: galen1994 Date: Wed, 30 Oct 2024 16:38:41 +0800 Subject: [PATCH 3/4] php8.2 and php8.3 add module --- drupal-web/php8.2-fpm-apache/Dockerfile | 7 +++++++ drupal-web/php8.3-fpm-apache/Dockerfile | 7 +++++++ 2 files changed, 14 insertions(+) diff --git a/drupal-web/php8.2-fpm-apache/Dockerfile b/drupal-web/php8.2-fpm-apache/Dockerfile index 7d63ab7..0c5e4d3 100644 --- a/drupal-web/php8.2-fpm-apache/Dockerfile +++ b/drupal-web/php8.2-fpm-apache/Dockerfile @@ -395,6 +395,13 @@ RUN printf "\n" | pecl install apcu RUN docker-php-ext-enable apcu RUN pecl clear-cache +# Install php gnupg +RUN set -eux; \ + apt-get update && apt-get install -y --no-install-recommends libgpgme11-dev +RUN printf "\n" | pecl install gnupg +RUN docker-php-ext-enable gnupg +RUN pecl clear-cache + # Install new relic agent RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-10.21.0.11-linux.tar.gz \ && gzip -dc newrelic.tar.gz | tar xf - \ diff --git a/drupal-web/php8.3-fpm-apache/Dockerfile b/drupal-web/php8.3-fpm-apache/Dockerfile index 2d2188f..3a2dd3d 100644 --- a/drupal-web/php8.3-fpm-apache/Dockerfile +++ b/drupal-web/php8.3-fpm-apache/Dockerfile @@ -404,6 +404,13 @@ RUN printf "\n" | pecl install apcu RUN docker-php-ext-enable apcu RUN pecl clear-cache +# Install php gnupg +RUN set -eux; \ + apt-get update && apt-get install -y --no-install-recommends libgpgme11-dev +RUN printf "\n" | pecl install gnupg +RUN docker-php-ext-enable gnupg +RUN pecl clear-cache + # Install new relic agent RUN curl -o newrelic.tar.gz https://download.newrelic.com/php_agent/release/newrelic-php5-10.21.0.11-linux.tar.gz \ && gzip -dc newrelic.tar.gz | tar xf - \ From e9736047b5739a3387a14bc6d606e5ace75c9e48 Mon Sep 17 00:00:00 2001 From: galen1994 Date: Wed, 30 Oct 2024 16:45:08 +0800 Subject: [PATCH 4/4] upgrade php 8.2 version to 8.2.23 --- drupal-web/php8.2-fpm-apache/Dockerfile | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drupal-web/php8.2-fpm-apache/Dockerfile b/drupal-web/php8.2-fpm-apache/Dockerfile index 0c5e4d3..ee933a4 100644 --- a/drupal-web/php8.2-fpm-apache/Dockerfile +++ b/drupal-web/php8.2-fpm-apache/Dockerfile @@ -118,9 +118,9 @@ ENV PHP_LDFLAGS="-Wl,-O1 -pie" ENV GPG_KEYS 1198C0117593497A5EC5C199286AF1F9897469DC 39B641343D8C104B2B146DC3F9C39DC0B9698544 E60913E4DF209907D8E30D96659A97C9CF2A795A -ENV PHP_VERSION 8.2.20 -ENV PHP_URL="https://www.php.net/distributions/php-8.2.20.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.20.tar.xz.asc" -ENV PHP_SHA256="4474cc430febef6de7be958f2c37253e5524d5c5331a7e1765cd2d2234881e50" +ENV PHP_VERSION 8.2.23 +ENV PHP_URL="https://www.php.net/distributions/php-8.2.23.tar.xz" PHP_ASC_URL="https://www.php.net/distributions/php-8.2.23.tar.xz.asc" +ENV PHP_SHA256="81c5ae6ba44e262a076349ee54a2e468638a4571085d80bff37f6fd308e1d8d5" RUN set -eux; \ \