diff --git a/7.2/buster/apache/Dockerfile b/7.2/buster/apache/Dockerfile index beb5abe..274a61a 100644 --- a/7.2/buster/apache/Dockerfile +++ b/7.2/buster/apache/Dockerfile @@ -1,166 +1,166 @@ FROM php:7.2.26-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='7.2.26-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2021-12-26' + com.bmeme.project.version='7.2.26-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2021-12-26' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='1.9.2' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='1.9.2' \ + TIMEZONE=Europe/Rome # Program version variables ENV IGBINARY_VERSION=3.1.0 \ - MCRYPT_VERSION=1.0.3 \ - OAUTH_VERSION=2.0.4 \ - REDIS_VERSION=5.1.1 + MCRYPT_VERSION=1.0.3 \ + OAUTH_VERSION=2.0.4 \ + REDIS_VERSION=5.1.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + tzdata \ + unzip \ + vim \ + zip \ + " # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype-dir=/usr \ - --with-jpeg-dir=/usr \ - --with-png-dir=/usr \ + --with-freetype-dir=/usr \ + --with-jpeg-dir=/usr \ + --with-png-dir=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip \ - --with-libzip; \ + --with-libzip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/7.3/buster/apache/Dockerfile b/7.3/buster/apache/Dockerfile index aaa9b90..70d5ffc 100644 --- a/7.3/buster/apache/Dockerfile +++ b/7.3/buster/apache/Dockerfile @@ -1,166 +1,166 @@ FROM php:7.3.33-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='7.3.33-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2021-12-26' + com.bmeme.project.version='7.3.33-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2021-12-26' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.2.1' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.2.1' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.1.0 \ - MCRYPT_VERSION=1.0.3 \ - OAUTH_VERSION=2.0.4 \ - REDIS_VERSION=5.1.1 + MCRYPT_VERSION=1.0.3 \ + OAUTH_VERSION=2.0.4 \ + REDIS_VERSION=5.1.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype-dir=/usr \ - --with-jpeg-dir=/usr \ - --with-png-dir=/usr \ + --with-freetype-dir=/usr \ + --with-jpeg-dir=/usr \ + --with-png-dir=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip \ - --with-libzip; \ + --with-libzip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/7.4/bullseye/apache/Dockerfile b/7.4/bullseye/apache/Dockerfile index a4e4da9..6b878fc 100644 --- a/7.4/bullseye/apache/Dockerfile +++ b/7.4/bullseye/apache/Dockerfile @@ -1,164 +1,164 @@ FROM php:7.4.32-apache-bullseye LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='7.4.32-apache-bullseye' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2021-10-18' + com.bmeme.project.version='7.4.32-apache-bullseye' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2021-10-18' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.4.1' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.4.1' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.1.0 \ - MCRYPT_VERSION=1.0.3 \ - OAUTH_VERSION=2.0.4 \ - REDIS_VERSION=5.1.1 + MCRYPT_VERSION=1.0.3 \ + OAUTH_VERSION=2.0.4 \ + REDIS_VERSION=5.1.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/7.4/buster/apache/Dockerfile b/7.4/buster/apache/Dockerfile index 45c6f24..f8f226a 100644 --- a/7.4/buster/apache/Dockerfile +++ b/7.4/buster/apache/Dockerfile @@ -1,164 +1,164 @@ FROM php:7.4.32-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='7.4.32-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2022-10-18' + com.bmeme.project.version='7.4.32-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2022-10-18' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.4.1' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.4.1' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.1.0 \ - MCRYPT_VERSION=1.0.3 \ - OAUTH_VERSION=2.0.4 \ - REDIS_VERSION=5.1.1 + MCRYPT_VERSION=1.0.3 \ + OAUTH_VERSION=2.0.4 \ + REDIS_VERSION=5.1.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.0/bullseye/apache/Dockerfile b/8.0/bullseye/apache/Dockerfile index daa982d..0c0b1bf 100644 --- a/8.0/bullseye/apache/Dockerfile +++ b/8.0/bullseye/apache/Dockerfile @@ -1,165 +1,165 @@ FROM php:8.0.30-apache-bullseye LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.0.30-apache-bullseye' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2023-10-14' + com.bmeme.project.version='8.0.30-apache-bullseye' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2023-10-14' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.6.5' \ - TIMEZONE=Europe/Rome \ + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.6.5' \ + TIMEZONE=Europe/Rome \ ANSIBLE_VERSION=8.5.0 # PHP extensions variables ENV IGBINARY_VERSION=3.2.14 \ - MCRYPT_VERSION=1.0.6 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.1 + MCRYPT_VERSION=1.0.6 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=6.0.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install --no-cache-dir ansible==${ANSIBLE_VERSION}; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install --no-cache-dir ansible==${ANSIBLE_VERSION}; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.0/buster/apache/Dockerfile b/8.0/buster/apache/Dockerfile index 352f7ab..cff76bf 100644 --- a/8.0/buster/apache/Dockerfile +++ b/8.0/buster/apache/Dockerfile @@ -1,164 +1,164 @@ FROM php:8.0.30-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.0.30-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2023-10-14' + com.bmeme.project.version='8.0.30-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2023-10-14' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.6.5' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.6.5' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.14 \ - MCRYPT_VERSION=1.0.6 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.1 + MCRYPT_VERSION=1.0.6 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=6.0.1 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.1/alpine/fpm/Dockerfile b/8.1/alpine/fpm/Dockerfile index f57dde7..a5572ec 100644 --- a/8.1/alpine/fpm/Dockerfile +++ b/8.1/alpine/fpm/Dockerfile @@ -1,20 +1,20 @@ -FROM composer:2.8.0 as composer -FROM php:8.1.30-fpm-alpine3.20 +FROM composer:2.9.2 AS composer +FROM php:8.1.33-fpm-alpine3.21 LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.1.30-fpm-alpine' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.1.33-fpm-alpine' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' # Variables ENV COMPOSER_HOME=/var/www/.composer \ TIMEZONE=Europe/Rome # PHP extensions variables -ENV IGBINARY_VERSION=3.2.15 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ @@ -33,7 +33,7 @@ ENV OPCACHE_ENABLED=1 \ OPCACHE_REVALIDATE_FREQ=60 \ OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ git \ mysql-client \ @@ -42,7 +42,7 @@ ENV PERSISTENT_PROGRAMS \ tzdata \ unzip \ vim \ - zip + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -50,93 +50,93 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer # install the PHP extensions we need RUN set -eux; \ apk add --no-cache \ - ${PERSISTENT_PROGRAMS} \ - ${PHPIZE_DEPS} \ - freetype-dev \ - libjpeg-turbo-dev \ - libpng-dev \ - icu-dev \ - libmcrypt-dev \ - pcre-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PERSISTENT_PROGRAMS} \ + ${PHPIZE_DEPS} \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + icu-dev \ + libmcrypt-dev \ + pcre-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ - pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ - ; \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 - pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ - \ + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ - ; \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ docker-php-ext-configure intl; \ - docker-php-ext-configure zip; \ - docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ - ;\ - \ - docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ - ; \ - docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ - ; \ - \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ # remove php source docker-php-source delete; \ apk del pcre-dev ${PHPIZE_DEPS} RUN set -eux; \ - # set localtime and timezone - rm -f /etc/localtime; \ - cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + # set localtime and timezone + rm -f /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ echo "${TIMEZONE}" > /etc/timezone; \ \ - # configure composer home directory + # configure composer home directory mkdir ${COMPOSER_HOME}; \ \ # set application ini settings { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ - } > /usr/local/etc/php/conf.d/application.ini; \ - \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ # set opcache ini settings # see https://secure.php.net/manual/en/opcache.installation.php { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ - } > /usr/local/etc/php/conf.d/opcache.ini; \ - \ - # inject index.php - echo " /var/www/html/index.php + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php diff --git a/8.1/bookworm/apache/Dockerfile b/8.1/bookworm/apache/Dockerfile new file mode 100644 index 0000000..352ccb4 --- /dev/null +++ b/8.1/bookworm/apache/Dockerfile @@ -0,0 +1,182 @@ +FROM composer:2.9.2 AS composer +FROM php:8.1.33-apache-bookworm AS ansible + +ENV ANSIBLE_CORE_VERSION 2.17.14 + +RUN set -eux; \ + # install python + apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ + \ + # install ansible + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + +FROM php:8.1.33-apache-bookworm +LABEL com.bmeme.project.family='PHP Docker Image' \ + com.bmeme.project.version='8.1.33-apache-bookworm' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' + +# Variables +ENV COMPOSER_HOME=/var/www/.composer \ + TIMEZONE=Europe/Rome + +# PHP extensions variables +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 + +# PHP environment variables +ENV PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail + +# OPCACHE environment variables +ENV OPCACHE_ENABLED=1 \ + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 + +ENV PERSISTENT_PROGRAMS="\ + gnupg \ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" + +# install Composer +COPY --from=composer /usr/bin/composer /usr/bin/composer + +# install Ansible +COPY --from=ansible /usr/lib/python3.11/lib-dynload /usr/lib/python3.11/lib-dynload +COPY --from=ansible /usr/local/lib/python3.11/dist-packages /usr/local/lib/python3.11/dist-packages +COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ + +# install the PHP extensions we need +RUN set -eux; \ + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ + ; \ + \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ + \ + # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ + docker-php-ext-configure gd \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ + docker-php-ext-configure intl; \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual ${savedAptMark}; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/*; \ + \ + # remove php source + docker-php-source delete + +RUN set -eux; \ + # set localtime and timezone + rm /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # configure composer home directory + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php \ No newline at end of file diff --git a/8.1/bullseye/apache/Dockerfile b/8.1/bullseye/apache/Dockerfile index 5ea0041..69749ea 100644 --- a/8.1/bullseye/apache/Dockerfile +++ b/8.1/bullseye/apache/Dockerfile @@ -1,60 +1,60 @@ -FROM composer:2.8.0 as composer -FROM php:8.1.30-apache-bullseye as ansible +FROM composer:2.8.0 AS composer +FROM php:8.1.30-apache-bullseye AS ansible ENV ANSIBLE_CORE_VERSION 2.15.10 RUN set -eux; \ # install python apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ - \ + \ # install ansible - pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} FROM php:8.1.30-apache-bullseye LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.1.30-apache-bullseye' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.1.30-apache-bullseye' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2024-10-04' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - TIMEZONE=Europe/Rome + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.15 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 + MCRYPT_VERSION=1.0.7 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=6.0.2 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -68,114 +68,114 @@ COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ # configure composer home directory - mkdir ${COMPOSER_HOME}; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.1/buster/apache/Dockerfile b/8.1/buster/apache/Dockerfile index 26949a2..ed308c7 100644 --- a/8.1/buster/apache/Dockerfile +++ b/8.1/buster/apache/Dockerfile @@ -1,169 +1,169 @@ FROM php:8.1.14-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.1.14-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2023-01-27' + com.bmeme.project.version='8.1.14-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2023-01-27' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.5.1' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.5.1' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.12 \ - MCRYPT_VERSION=1.0.5 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=5.3.7 + MCRYPT_VERSION=1.0.5 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=5.3.7 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - # mcrypt is not available for php >= 8.1.1 \ - # @see https://pecl.php.net/package/mcrypt - # mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + # mcrypt is not available for php >= 8.1.1 \ + # @see https://pecl.php.net/package/mcrypt + # mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - # mcrypt is not available for php >= 8.1.1 \ - # @see https://pecl.php.net/package/mcrypt - # mcrypt \ - igbinary \ - oauth \ + # mcrypt is not available for php >= 8.1.1 \ + # @see https://pecl.php.net/package/mcrypt + # mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.1/trixie/apache/Dockerfile b/8.1/trixie/apache/Dockerfile new file mode 100644 index 0000000..a02521d --- /dev/null +++ b/8.1/trixie/apache/Dockerfile @@ -0,0 +1,181 @@ +FROM composer:2.9.2 AS composer +FROM php:8.1.33-apache-trixie AS ansible + +ENV ANSIBLE_CORE_VERSION 2.19.4 + +RUN set -eux; \ + # install python + apt-get update && apt-get install -y --no-install-recommends python3 python3-pip; \ + \ + # install ansible + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + +FROM php:8.1.33-apache-trixie +LABEL com.bmeme.project.family='PHP Docker Image' \ + com.bmeme.project.version='8.1.33-apache-trixie' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' + +# Variables +ENV COMPOSER_HOME=/var/www/.composer \ + TIMEZONE=Europe/Rome + +# PHP extensions variables +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 + +# PHP environment variables +ENV PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail + +# OPCACHE environment variables +ENV OPCACHE_ENABLED=1 \ + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 + +ENV PERSISTENT_PROGRAMS="\ + gnupg \ + git \ + default-mysql-client \ + patch \ + python3 \ + tzdata \ + unzip \ + vim \ + zip" + +# install Composer +COPY --from=composer /usr/bin/composer /usr/bin/composer + +# install Ansible +COPY --from=ansible /usr/lib/python3.13/lib-dynload /usr/lib/python3.13/lib-dynload +COPY --from=ansible /usr/local/lib/python3.13/dist-packages /usr/local/lib/python3.13/dist-packages +COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ + +# install the PHP extensions we need +RUN set -eux; \ + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre2-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ + ; \ + \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ + \ + # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ + docker-php-ext-configure gd \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ + docker-php-ext-configure intl; \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual ${savedAptMark}; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/*; \ + \ + # remove php source + docker-php-source delete + +RUN set -eux; \ + # set localtime and timezone + rm /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # configure composer home directory + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php \ No newline at end of file diff --git a/8.2/alpine/fpm/Dockerfile b/8.2/alpine/fpm/Dockerfile index c9599ea..06e4dd6 100644 --- a/8.2/alpine/fpm/Dockerfile +++ b/8.2/alpine/fpm/Dockerfile @@ -1,10 +1,10 @@ -FROM composer:2.8.0 as composer -FROM php:8.2.24-fpm-alpine3.20 +FROM composer:2.9.2 AS composer +FROM php:8.2.29-fpm-alpine3.21 LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.2.24-fpm-alpine' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.2.29-fpm-alpine' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' # Variables ENV COMPOSER_HOME=/var/www/.composer \ @@ -12,9 +12,9 @@ ENV COMPOSER_HOME=/var/www/.composer \ # PHP extensions variables ENV IGBINARY_VERSION=3.2.16 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ @@ -33,7 +33,7 @@ ENV OPCACHE_ENABLED=1 \ OPCACHE_REVALIDATE_FREQ=60 \ OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ git \ mysql-client \ @@ -42,7 +42,7 @@ ENV PERSISTENT_PROGRAMS \ tzdata \ unzip \ vim \ - zip + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -50,90 +50,90 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer # install the PHP extensions we need RUN set -eux; \ apk add --no-cache \ - ${PERSISTENT_PROGRAMS} \ - ${PHPIZE_DEPS} \ - freetype-dev \ - libjpeg-turbo-dev \ - libpng-dev \ - icu-dev \ - libmcrypt-dev \ - pcre-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PERSISTENT_PROGRAMS} \ + ${PHPIZE_DEPS} \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + icu-dev \ + libmcrypt-dev \ + pcre-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ - pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ - ; \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 - pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ - \ + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ - ; \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ docker-php-ext-configure intl; \ - docker-php-ext-configure zip; \ - docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ - ;\ - \ - docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ - ; \ - docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ - ; \ - \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ # remove php source docker-php-source delete; \ apk del pcre-dev ${PHPIZE_DEPS} RUN set -eux; \ - # set localtime and timezone - rm -f /etc/localtime; \ - cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + # set localtime and timezone + rm -f /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ echo "${TIMEZONE}" > /etc/timezone; \ \ # set application ini settings { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ - } > /usr/local/etc/php/conf.d/application.ini; \ - \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ # set opcache ini settings # see https://secure.php.net/manual/en/opcache.installation.php { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ - } > /usr/local/etc/php/conf.d/opcache.ini; \ - \ - # inject index.php - echo " /var/www/html/index.php + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php diff --git a/8.2/bookworm/apache/Dockerfile b/8.2/bookworm/apache/Dockerfile index 681e2d0..995a200 100644 --- a/8.2/bookworm/apache/Dockerfile +++ b/8.2/bookworm/apache/Dockerfile @@ -1,60 +1,60 @@ -FROM composer:2.8.0 as composer -FROM php:8.2.24-apache-bookworm as ansible +FROM composer:2.9.2 AS composer +FROM php:8.2.29-apache-bookworm AS ansible -ENV ANSIBLE_CORE_VERSION 2.17.4 +ENV ANSIBLE_CORE_VERSION 2.17.14 RUN set -eux; \ # install python apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ - \ + \ # install ansible - pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages -FROM php:8.2.24-apache-bookworm +FROM php:8.2.29-apache-bookworm LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.2.24-apache-bookworm' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.2.29-apache-bookworm' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - TIMEZONE=Europe/Rome + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.16 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -68,114 +68,114 @@ COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r realpath | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r realpath | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ # configure composer home directory - mkdir ${COMPOSER_HOME}; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.2/bullseye/apache/Dockerfile b/8.2/bullseye/apache/Dockerfile index d33b47f..1fda340 100644 --- a/8.2/bullseye/apache/Dockerfile +++ b/8.2/bullseye/apache/Dockerfile @@ -1,60 +1,60 @@ -FROM composer:2.8.0 as composer -FROM php:8.2.24-apache-bullseye as ansible +FROM composer:2.8.0 AS composer +FROM php:8.2.24-apache-bullseye AS ansible ENV ANSIBLE_CORE_VERSION 2.15.12 RUN set -eux; \ # install python apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ - \ + \ # install ansible - pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} FROM php:8.2.24-apache-bullseye LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.2.24-apache-bullseye' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.2.24-apache-bullseye' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2024-10-04' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - TIMEZONE=Europe/Rome + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.16 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 + MCRYPT_VERSION=1.0.7 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=6.0.2 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -68,114 +68,114 @@ COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ # configure composer home directory - mkdir ${COMPOSER_HOME}; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.2/buster/apache/Dockerfile b/8.2/buster/apache/Dockerfile index 9eac0e2..ef23630 100644 --- a/8.2/buster/apache/Dockerfile +++ b/8.2/buster/apache/Dockerfile @@ -1,170 +1,170 @@ FROM php:8.2.1-apache-buster LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.2.1-apache-buster' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.maintainer.3='Michele Mondelli ' \ - com.bmeme.refreshedat='2023-01-27' + com.bmeme.project.version='8.2.1-apache-buster' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.maintainer.3='Michele Mondelli ' \ + com.bmeme.refreshedat='2023-01-27' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - # @see https://getcomposer.org/download/ - COMPOSER_VERSION='2.5.1' \ - TIMEZONE=Europe/Rome + # @see https://getcomposer.org/download/ + COMPOSER_VERSION='2.5.1' \ + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.12 \ - MCRYPT_VERSION=1.0.5 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=5.3.7 + MCRYPT_VERSION=1.0.5 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=5.3.7 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip +ENV PERSISTENT_PROGRAMS="\ + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install the PHP extensions we need RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ ; \ \ pecl install \ - # mcrypt is not available for php >= 8.1.1 \ - # @see https://pecl.php.net/package/mcrypt - # mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + # mcrypt is not available for php >= 8.1.1 \ + # @see https://pecl.php.net/package/mcrypt + # mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - # mcrypt is not available for php >= 8.1.1 \ - # @see https://pecl.php.net/package/mcrypt - # mcrypt \ - igbinary \ - oauth \ + # mcrypt is not available for php >= 8.1.1 \ + # @see https://pecl.php.net/package/mcrypt + # mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # install composer - mkdir ${COMPOSER_HOME}; \ - curl -k -sS https://getcomposer.org/installer \ - | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ - # install ansible - curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ - python3 get-pip.py; \ - pip install ansible; \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # install composer + mkdir ${COMPOSER_HOME}; \ + curl -k -sS https://getcomposer.org/installer \ + | php -- --install-dir=/usr/local/bin --version=${COMPOSER_VERSION} --filename=composer; \ + # install ansible + curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py; \ + python3 get-pip.py; \ + pip install ansible; \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r dpkg-query -S \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r dpkg-query -S \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ - # set application ini settings - { \ - echo 'date.timezone = ${TIMEZONE}'; \ - echo 'error_log = ${PHP_ERROR_LOG}'; \ - echo 'log_errors = ${PHP_LOG_ENABLED}'; \ - echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ - echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ - echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ - echo 'sendmail_path = ${PHP_SENDMAIL}'; \ - echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # set application ini settings + { \ + echo 'date.timezone = ${TIMEZONE}'; \ + echo 'error_log = ${PHP_ERROR_LOG}'; \ + echo 'log_errors = ${PHP_LOG_ENABLED}'; \ + echo 'max_execution_time = ${PHP_MAX_EXECUTION_TIME}'; \ + echo 'memory_limit = ${PHP_MEMORY_LIMIT}'; \ + echo 'post_max_size = ${PHP_POST_MAX_SIZE}'; \ + echo 'sendmail_path = ${PHP_SENDMAIL}'; \ + echo 'upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}'; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ - echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ - echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ - echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ - echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ - echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo 'opcache.enable = ${OPCACHE_ENABLED}'; \ + echo 'opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}'; \ + echo 'opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}'; \ + echo 'opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}'; \ + echo 'opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}'; \ + echo 'opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}'; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.2/trixie/apache/Dockerfile b/8.2/trixie/apache/Dockerfile new file mode 100644 index 0000000..0625188 --- /dev/null +++ b/8.2/trixie/apache/Dockerfile @@ -0,0 +1,181 @@ +FROM composer:2.9.2 AS composer +FROM php:8.2.29-apache-trixie AS ansible + +ENV ANSIBLE_CORE_VERSION 2.19.4 + +RUN set -eux; \ + # install python + apt-get update && apt-get install -y --no-install-recommends python3 python3-pip; \ + \ + # install ansible + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + +FROM php:8.2.29-apache-trixie +LABEL com.bmeme.project.family='PHP Docker Image' \ + com.bmeme.project.version='8.2.29-apache-trixie' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' + +# Variables +ENV COMPOSER_HOME=/var/www/.composer \ + TIMEZONE=Europe/Rome + +# PHP extensions variables +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 + +# PHP environment variables +ENV PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail + +# OPCACHE environment variables +ENV OPCACHE_ENABLED=1 \ + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 + +ENV PERSISTENT_PROGRAMS="\ + gnupg \ + git \ + default-mysql-client \ + patch \ + python3 \ + tzdata \ + unzip \ + vim \ + zip" + +# install Composer +COPY --from=composer /usr/bin/composer /usr/bin/composer + +# install Ansible +COPY --from=ansible /usr/lib/python3.13/lib-dynload /usr/lib/python3.13/lib-dynload +COPY --from=ansible /usr/local/lib/python3.13/dist-packages /usr/local/lib/python3.13/dist-packages +COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ + +# install the PHP extensions we need +RUN set -eux; \ + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre2-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ + ; \ + \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ + \ + # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ + docker-php-ext-configure gd \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ + docker-php-ext-configure intl; \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual ${savedAptMark}; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r realpath | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/*; \ + \ + # remove php source + docker-php-source delete + +RUN set -eux; \ + # set localtime and timezone + rm /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # configure composer home directory + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php \ No newline at end of file diff --git a/8.3/alpine/fpm/Dockerfile b/8.3/alpine/fpm/Dockerfile index 6718343..7d25322 100644 --- a/8.3/alpine/fpm/Dockerfile +++ b/8.3/alpine/fpm/Dockerfile @@ -1,20 +1,20 @@ -FROM composer:2.8.0 as composer -FROM php:8.3.12-fpm-alpine3.20 +FROM composer:2.8.0 AS composer +FROM php:8.3.28-fpm-alpine3.21 LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.3.12-fpm-alpine' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.3.28-fpm-alpine' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' # Variables ENV COMPOSER_HOME=/var/www/.composer \ TIMEZONE=Europe/Rome # PHP extensions variables -ENV IGBINARY_VERSION=3.2.15 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ @@ -33,7 +33,7 @@ ENV OPCACHE_ENABLED=1 \ OPCACHE_REVALIDATE_FREQ=60 \ OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ git \ mysql-client \ @@ -42,7 +42,7 @@ ENV PERSISTENT_PROGRAMS \ tzdata \ unzip \ vim \ - zip + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -50,88 +50,88 @@ COPY --from=composer /usr/bin/composer /usr/bin/composer # install the PHP extensions we need RUN set -eux; \ apk add --no-cache \ - ${PERSISTENT_PROGRAMS} \ - ${PHPIZE_DEPS} \ - freetype-dev \ - libjpeg-turbo-dev \ - libpng-dev \ - icu-dev \ - libmcrypt-dev \ - pcre-dev \ - libpq-dev \ - libzip-dev \ + ${PERSISTENT_PROGRAMS} \ + ${PHPIZE_DEPS} \ + freetype-dev \ + libjpeg-turbo-dev \ + libpng-dev \ + icu-dev \ + libmcrypt-dev \ + pcre-dev \ + libpq-dev \ + libzip-dev \ ; \ \ - pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ - ; \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 - pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ - \ + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - ; \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + ; \ docker-php-ext-configure intl; \ - docker-php-ext-configure zip; \ - docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ - ;\ - \ - docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ - ; \ - docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ - ; \ - \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ # remove php source docker-php-source delete; \ apk del pcre-dev ${PHPIZE_DEPS} RUN set -eux; \ - # set localtime and timezone - rm -f /etc/localtime; \ - cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + # set localtime and timezone + rm -f /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ echo "${TIMEZONE}" > /etc/timezone; \ \ # set application ini settings { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ - } > /usr/local/etc/php/conf.d/application.ini; \ - \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ # set opcache ini settings # see https://secure.php.net/manual/en/opcache.installation.php { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ - } > /usr/local/etc/php/conf.d/opcache.ini; \ - \ - # inject index.php - echo " /var/www/html/index.php + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php diff --git a/8.3/bookworm/apache/Dockerfile b/8.3/bookworm/apache/Dockerfile index 724f2f4..c7e19c4 100644 --- a/8.3/bookworm/apache/Dockerfile +++ b/8.3/bookworm/apache/Dockerfile @@ -1,60 +1,60 @@ -FROM composer:2.8.0 as composer -FROM php:8.3.12-apache-bookworm as ansible +FROM composer:2.9.2 AS composer +FROM php:8.3.28-apache-bookworm AS ansible -ENV ANSIBLE_CORE_VERSION 2.17.4 +ENV ANSIBLE_CORE_VERSION 2.17.14 RUN set -eux; \ # install python apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ - \ + \ # install ansible - pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages -FROM php:8.3.12-apache-bookworm +FROM php:8.3.28-apache-bookworm LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.3.12-apache-bookworm' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.3.28-apache-bookworm' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - TIMEZONE=Europe/Rome + TIMEZONE=Europe/Rome # PHP extensions variables -ENV IGBINARY_VERSION=3.2.15 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -68,114 +68,114 @@ COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - | xargs -r realpath | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r realpath | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ # configure composer home directory - mkdir ${COMPOSER_HOME}; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.3/bullseye/apache/Dockerfile b/8.3/bullseye/apache/Dockerfile index ed86365..7fd10f1 100644 --- a/8.3/bullseye/apache/Dockerfile +++ b/8.3/bullseye/apache/Dockerfile @@ -1,60 +1,60 @@ -FROM composer:2.8.0 as composer -FROM php:8.3.12-apache-bullseye as ansible +FROM composer:2.8.0 AS composer +FROM php:8.3.12-apache-bullseye AS ansible ENV ANSIBLE_CORE_VERSION 2.15.12 RUN set -eux; \ # install python apt-get update && apt-get install -y --no-install-recommends python3 python3-distutils python3-pip; \ - \ + \ # install ansible - pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} FROM php:8.3.12-apache-bullseye LABEL com.bmeme.project.family='PHP Docker Image' \ - com.bmeme.project.version='8.3.12-apache-bullseye' \ - com.bmeme.maintainer.1='Daniele Piaggesi ' \ - com.bmeme.maintainer.2='Roberto Mariani ' \ - com.bmeme.refreshedat='2024-10-04' + com.bmeme.project.version='8.3.12-apache-bullseye' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2024-10-04' # Variables ENV COMPOSER_HOME=/var/www/.composer \ - TIMEZONE=Europe/Rome + TIMEZONE=Europe/Rome # PHP extensions variables ENV IGBINARY_VERSION=3.2.15 \ - MCRYPT_VERSION=1.0.7 \ - OAUTH_VERSION=2.0.7 \ - REDIS_VERSION=6.0.2 + MCRYPT_VERSION=1.0.7 \ + OAUTH_VERSION=2.0.7 \ + REDIS_VERSION=6.0.2 # PHP environment variables ENV PHP_MEMORY_LIMIT=512M \ - PHP_MAX_EXECUTION_TIME=60 \ - PHP_LOG_ENABLED=1 \ - PHP_ERROR_LOG=/tmp/php_errors.log \ - PHP_UPLOAD_MAX_FILESIZE=20M \ - PHP_POST_MAX_SIZE=20M \ - PHP_SENDMAIL=/usr/local/sendmail + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail # OPCACHE environment variables ENV OPCACHE_ENABLED=1 \ - OPCACHE_MEMORY_CONSUMPTION=128 \ - OPCACHE_INTERNED_STRINGS_BUFFER=8 \ - OPCACHE_MAX_ACCELERATED_FILES=4000 \ - OPCACHE_REVALIDATE_FREQ=60 \ - OPCACHE_FAST_SHUTDOWN=1 + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 -ENV PERSISTENT_PROGRAMS \ +ENV PERSISTENT_PROGRAMS="\ gnupg \ - git \ - default-mysql-client \ - patch \ - python3 \ - python3-distutils \ - tzdata \ - unzip \ - vim \ - zip + git \ + default-mysql-client \ + patch \ + python3 \ + python3-distutils \ + tzdata \ + unzip \ + vim \ + zip" # install Composer COPY --from=composer /usr/bin/composer /usr/bin/composer @@ -68,115 +68,115 @@ COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ RUN set -eux; \ \ if command -v a2enmod; then \ - a2enmod rewrite; \ + a2enmod rewrite; \ fi; \ \ savedAptMark="$(apt-mark showmanual)"; \ \ apt-get update; \ apt-get install -y --no-install-recommends \ - ${PHPIZE_DEPS} \ - ${PERSISTENT_PROGRAMS} \ - libfreetype6-dev \ - libicu-dev \ - libjpeg62-turbo-dev \ - libmcrypt-dev \ - libpcre3-dev \ - libpng-dev \ - libpq-dev \ - libzip-dev \ - libwebp-dev \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre3-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ ; \ \ pecl install \ - mcrypt-${MCRYPT_VERSION} \ - igbinary-${IGBINARY_VERSION} \ - oauth-${OAUTH_VERSION} \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ ; \ \ # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ \ docker-php-ext-configure gd \ - --with-freetype=/usr \ - --with-jpeg=/usr \ - --with-webp=/usr \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ ; \ docker-php-ext-configure intl; \ docker-php-ext-configure zip; \ docker-php-ext-configure redis \ - --enable-redis-igbinary \ - --enable-redis-lzf \ + --enable-redis-igbinary \ + --enable-redis-lzf \ ;\ \ docker-php-ext-enable \ - mcrypt \ - igbinary \ - oauth \ + mcrypt \ + igbinary \ + oauth \ ; \ \ docker-php-ext-install -j "$(nproc)" \ - bcmath \ - gd \ - intl \ - opcache \ - pdo_mysql \ - pdo_pgsql \ - redis \ - # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' - # sockets \ - zip \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ ; \ \ - # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies apt-mark auto '.*' > /dev/null; \ apt-mark manual ${savedAptMark}; \ ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ - | awk '/=>/ { print $3 }' \ - | sort -u \ - # | xargs -r dpkg-query -S \ - | xargs -r realpath | xargs -r dpkg-query --search \ - | cut -d: -f1 \ - | sort -u \ - | xargs -rt apt-mark manual; \ - \ - apt-mark manual ${PERSISTENT_PROGRAMS}; \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + # | xargs -r dpkg-query -S \ + | xargs -r realpath | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ rm -rf /var/lib/apt/lists/*; \ \ - # remove php source - docker-php-source delete + # remove php source + docker-php-source delete RUN set -eux; \ # set localtime and timezone rm /etc/localtime; \ cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ - echo "${TIMEZONE}" > /etc/timezone; \ - \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ # configure composer home directory - mkdir ${COMPOSER_HOME}; \ - \ - # set application ini settings - { \ - echo "date.timezone = ${TIMEZONE}"; \ - echo "error_log = ${PHP_ERROR_LOG}"; \ - echo "log_errors = ${PHP_LOG_ENABLED}"; \ - echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ - echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ - echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ - echo "sendmail_path = ${PHP_SENDMAIL}"; \ - echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ } > /usr/local/etc/php/conf.d/application.ini; \ \ - # set opcache ini settings - # see https://secure.php.net/manual/en/opcache.installation.php - { \ - echo "opcache.enable = ${OPCACHE_ENABLED}"; \ - echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ - echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ - echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ - echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ - echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ } > /usr/local/etc/php/conf.d/opcache.ini; \ \ # inject index.php diff --git a/8.3/trixie/apache/Dockerfile b/8.3/trixie/apache/Dockerfile new file mode 100644 index 0000000..17fc3f1 --- /dev/null +++ b/8.3/trixie/apache/Dockerfile @@ -0,0 +1,181 @@ +FROM composer:2.9.2 AS composer +FROM php:8.3.28-apache-trixie AS ansible + +ENV ANSIBLE_CORE_VERSION 2.19.4 + +RUN set -eux; \ + # install python + apt-get update && apt-get install -y --no-install-recommends python3 python3-pip; \ + \ + # install ansible + pip install --no-cache-dir ansible-core==${ANSIBLE_CORE_VERSION} --break-system-packages + +FROM php:8.3.28-apache-trixie +LABEL com.bmeme.project.family='PHP Docker Image' \ + com.bmeme.project.version='8.3.28-apache-trixie' \ + com.bmeme.maintainer.1='Daniele Piaggesi ' \ + com.bmeme.maintainer.2='Roberto Mariani ' \ + com.bmeme.refreshedat='2025-12-02' + +# Variables +ENV COMPOSER_HOME=/var/www/.composer \ + TIMEZONE=Europe/Rome + +# PHP extensions variables +ENV IGBINARY_VERSION=3.2.16 \ + MCRYPT_VERSION=1.0.9 \ + OAUTH_VERSION=2.0.10 \ + REDIS_VERSION=6.3.0 + +# PHP environment variables +ENV PHP_MEMORY_LIMIT=512M \ + PHP_MAX_EXECUTION_TIME=60 \ + PHP_LOG_ENABLED=1 \ + PHP_ERROR_LOG=/tmp/php_errors.log \ + PHP_UPLOAD_MAX_FILESIZE=20M \ + PHP_POST_MAX_SIZE=20M \ + PHP_SENDMAIL=/usr/local/sendmail + +# OPCACHE environment variables +ENV OPCACHE_ENABLED=1 \ + OPCACHE_MEMORY_CONSUMPTION=128 \ + OPCACHE_INTERNED_STRINGS_BUFFER=8 \ + OPCACHE_MAX_ACCELERATED_FILES=4000 \ + OPCACHE_REVALIDATE_FREQ=60 \ + OPCACHE_FAST_SHUTDOWN=1 + +ENV PERSISTENT_PROGRAMS="\ + gnupg \ + git \ + default-mysql-client \ + patch \ + python3 \ + tzdata \ + unzip \ + vim \ + zip" + +# install Composer +COPY --from=composer /usr/bin/composer /usr/bin/composer + +# install Ansible +COPY --from=ansible /usr/lib/python3.13/lib-dynload /usr/lib/python3.13/lib-dynload +COPY --from=ansible /usr/local/lib/python3.13/dist-packages /usr/local/lib/python3.13/dist-packages +COPY --from=ansible /usr/local/bin/ansible* /usr/local/bin/ + +# install the PHP extensions we need +RUN set -eux; \ + \ + if command -v a2enmod; then \ + a2enmod rewrite; \ + fi; \ + \ + savedAptMark="$(apt-mark showmanual)"; \ + \ + apt-get update; \ + apt-get install -y --no-install-recommends \ + ${PHPIZE_DEPS} \ + ${PERSISTENT_PROGRAMS} \ + libfreetype6-dev \ + libicu-dev \ + libjpeg62-turbo-dev \ + libmcrypt-dev \ + libpcre2-dev \ + libpng-dev \ + libpq-dev \ + libzip-dev \ + libwebp-dev \ + ; \ + \ + pecl install \ + mcrypt-${MCRYPT_VERSION} \ + igbinary-${IGBINARY_VERSION} \ + oauth-${OAUTH_VERSION} \ + ; \ + \ + # See https://github.com/phpredis/phpredis/issues/1176#issuecomment-558787347 + pecl bundle --destination=/usr/src/php/ext redis-${REDIS_VERSION}; \ + \ + docker-php-ext-configure gd \ + --with-freetype=/usr \ + --with-jpeg=/usr \ + --with-webp=/usr \ + ; \ + docker-php-ext-configure intl; \ + docker-php-ext-configure zip; \ + docker-php-ext-configure redis \ + --enable-redis-igbinary \ + --enable-redis-lzf \ + ;\ + \ + docker-php-ext-enable \ + mcrypt \ + igbinary \ + oauth \ + ; \ + \ + docker-php-ext-install -j "$(nproc)" \ + bcmath \ + gd \ + intl \ + opcache \ + pdo_mysql \ + pdo_pgsql \ + redis \ + # due to error: invalid application of 'sizeof' to incomplete type 'struct cmsgcred' + # sockets \ + zip \ + ; \ + \ + # reset apt-mark's "manual" list so that "purge --auto-remove" will remove all build dependencies + apt-mark auto '.*' > /dev/null; \ + apt-mark manual ${savedAptMark}; \ + ldd "$(php -r 'echo ini_get("extension_dir");')"/*.so \ + | awk '/=>/ { print $3 }' \ + | sort -u \ + | xargs -r realpath | xargs -r dpkg-query --search \ + | cut -d: -f1 \ + | sort -u \ + | xargs -rt apt-mark manual; \ + \ + apt-mark manual ${PERSISTENT_PROGRAMS}; \ + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ + rm -rf /var/lib/apt/lists/*; \ + \ + # remove php source + docker-php-source delete + +RUN set -eux; \ + # set localtime and timezone + rm /etc/localtime; \ + cp /usr/share/zoneinfo/${TIMEZONE} /etc/localtime; \ + echo "${TIMEZONE}" > /etc/timezone; \ + \ + # configure composer home directory + mkdir ${COMPOSER_HOME}; \ + \ + # set application ini settings + { \ + echo "date.timezone = ${TIMEZONE}"; \ + echo "error_log = ${PHP_ERROR_LOG}"; \ + echo "log_errors = ${PHP_LOG_ENABLED}"; \ + echo "max_execution_time = ${PHP_MAX_EXECUTION_TIME}"; \ + echo "memory_limit = ${PHP_MEMORY_LIMIT}"; \ + echo "post_max_size = ${PHP_POST_MAX_SIZE}"; \ + echo "sendmail_path = ${PHP_SENDMAIL}"; \ + echo "upload_max_filesize = ${PHP_UPLOAD_MAX_FILESIZE}"; \ + } > /usr/local/etc/php/conf.d/application.ini; \ + \ + # set opcache ini settings + # see https://secure.php.net/manual/en/opcache.installation.php + { \ + echo "opcache.enable = ${OPCACHE_ENABLED}"; \ + echo "opcache.memory_consumption = ${OPCACHE_MEMORY_CONSUMPTION}"; \ + echo "opcache.interned_strings_buffer = ${OPCACHE_INTERNED_STRINGS_BUFFER}"; \ + echo "opcache.max_accelerated_files = ${OPCACHE_MAX_ACCELERATED_FILES}"; \ + echo "opcache.revalidate_freq = ${OPCACHE_REVALIDATE_FREQ}"; \ + echo "opcache.fast_shutdown = ${OPCACHE_FAST_SHUTDOWN}"; \ + } > /usr/local/etc/php/conf.d/opcache.ini; \ + \ + # inject index.php + echo " /var/www/html/index.php \ No newline at end of file diff --git a/config.json b/config.json index 4484f1b..255594a 100644 --- a/config.json +++ b/config.json @@ -1,57 +1,64 @@ { "include": [ - { - "name": "8.3.12-apache-bookworm", + { + "name": "8.3.28-apache-trixie", "php_pretty_version": "8.3", - "os_version": "bookworm", + "os_version": "trixie", "php_type": "apache", "latest": true }, { - "name": "8.3.12-apache-bullseye", + "name": "8.3.28-apache-bookworm", "php_pretty_version": "8.3", - "os_version": "bullseye", + "os_version": "bookworm", "php_type": "apache", "latest": false }, { - "name": "8.3.12-fpm-alpine", + "name": "8.3.28-fpm-alpine", "php_pretty_version": "8.3", "os_version": "alpine", "php_type": "fpm", "latest": false }, { - "name": "8.2.24-apache-bookworm", + "name": "8.2.29-apache-trixie", "php_pretty_version": "8.2", - "os_version": "bookworm", + "os_version": "trixie", "php_type": "apache", "latest": false }, { - "name": "8.2.24-apache-bullseye", + "name": "8.2.29-apache-bookworm", "php_pretty_version": "8.2", - "os_version": "bullseye", + "os_version": "bookworm", "php_type": "apache", "latest": false }, { - "name": "8.2.24-fpm-alpine", + "name": "8.2.29-fpm-alpine", "php_pretty_version": "8.2", "os_version": "alpine", "php_type": "fpm", "latest": false }, { - "name": "8.1.30-apache-bullseye", + "name": "8.1.33-apache-trixie", "php_pretty_version": "8.1", - "os_version": "bullseye", + "os_version": "trixie", + "php_type": "apache", + "latest": false + }, + { + "name": "8.1.33-apache-bookworm", + "php_pretty_version": "8.1", + "os_version": "bookworm", "php_type": "apache", "latest": false }, { - "name": "8.1.30-fpm-alpine", + "name": "8.1.33-fpm-alpine", "php_pretty_version": "8.1", "os_version": "alpine", "php_type": "fpm",