diff --git a/Dockerfiles/mods/Dockerfile-5.3 b/Dockerfiles/mods/Dockerfile-5.3 index c97cd8c..2e15ff1 100644 --- a/Dockerfiles/mods/Dockerfile-5.3 +++ b/Dockerfiles/mods/Dockerfile-5.3 @@ -116,6 +116,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_5.3.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu-4.0.11 \ diff --git a/Dockerfiles/mods/Dockerfile-5.4 b/Dockerfiles/mods/Dockerfile-5.4 index c6952c9..c94b85d 100644 --- a/Dockerfiles/mods/Dockerfile-5.4 +++ b/Dockerfiles/mods/Dockerfile-5.4 @@ -116,6 +116,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_5.4.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu-4.0.11 \ diff --git a/Dockerfiles/mods/Dockerfile-5.5 b/Dockerfiles/mods/Dockerfile-5.5 index d5a734b..975c25b 100644 --- a/Dockerfiles/mods/Dockerfile-5.5 +++ b/Dockerfiles/mods/Dockerfile-5.5 @@ -118,6 +118,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_5.5.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu-4.0.11 \ diff --git a/Dockerfiles/mods/Dockerfile-5.6 b/Dockerfiles/mods/Dockerfile-5.6 index ad01cf8..cff6697 100644 --- a/Dockerfiles/mods/Dockerfile-5.6 +++ b/Dockerfiles/mods/Dockerfile-5.6 @@ -120,6 +120,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_5.6.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu-4.0.11 \ diff --git a/Dockerfiles/mods/Dockerfile-7.0 b/Dockerfiles/mods/Dockerfile-7.0 index 5bdf96b..0f13eaf 100644 --- a/Dockerfiles/mods/Dockerfile-7.0 +++ b/Dockerfiles/mods/Dockerfile-7.0 @@ -118,6 +118,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_7.0.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu \ diff --git a/Dockerfiles/mods/Dockerfile-7.1 b/Dockerfiles/mods/Dockerfile-7.1 index 78e5723..6ef603d 100644 --- a/Dockerfiles/mods/Dockerfile-7.1 +++ b/Dockerfiles/mods/Dockerfile-7.1 @@ -118,6 +118,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_7.1.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && echo "/usr" | pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu \ diff --git a/Dockerfiles/mods/Dockerfile-7.2 b/Dockerfiles/mods/Dockerfile-7.2 index f58acd8..f28e2fc 100644 --- a/Dockerfiles/mods/Dockerfile-7.2 +++ b/Dockerfiles/mods/Dockerfile-7.2 @@ -119,6 +119,16 @@ RUN set -x \ ${BUILD_DEPS} \ \ \ + && EXTENSION_DIR="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" \ +&& if [ ! -d "${EXTENSION_DIR}" ]; then mkdir -p "${EXTENSION_DIR}"; fi \ +&& curl https://downloads.ioncube.com/loader_downloads/ioncube_loaders_lin_x86-64.tar.gz -L -o ioncube.tar.gz \ +&& tar xvfz ioncube.tar.gz \ +&& cd ioncube \ +&& cp "ioncube_loader_lin_7.2.so" "${EXTENSION_DIR}/ioncube.so" \ +&& cd ../ \ +&& rm -rf ioncube \ +&& rm -rf ioncube.tar.gz \ + \ && pecl install amqp \ && docker-php-ext-enable amqp \ && pecl install apcu \ diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/38-enable-modules.sh b/Dockerfiles/prod/data/docker-entrypoint.d/38-enable-modules.sh new file mode 100755 index 0000000..68b202e --- /dev/null +++ b/Dockerfiles/prod/data/docker-entrypoint.d/38-enable-modules.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env bash + +set -e +set -u +set -o pipefail + + +############################################################ +# Functions +############################################################ + +### +### Enable PHP Modules +### +enable_modules() { + local mod_varname="${1}" + local debug="${2}" + local cfg_path="/usr/local/etc/php/conf.d" + local mod_path= + mod_path="$( php -i | grep ^extension_dir | awk -F '=>' '{print $2}' | xargs )" + + + if ! env_set "${mod_varname}"; then + log "info" "\$${mod_varname} not set. Not enabling any PHP modules." "${debug}" + else + mods="$( env_get "${mod_varname}" )" + + if [ -z "${mods}" ]; then + log "info" "\$${mod_varname} set, but empty. Not enabling any PHP modules." "${debug}" + else + log "info" "Enabling the following PHP modules: ${mods}" "${debug}" + fi + + while read -r mod; do + mod="$( echo "${mod}" | xargs )" # trim + + # Does the module exist? + if [ -f "${mod_path}/${mod}.so" ]; then + # Exceptions to load speficially + if [ "${mod}" = "ioncube" ]; then + run "eche 'zend_extension=${mod_path}/ioncube.so' > '${cfg_path}/docker-ext-php-ext-ioncube.ini'" "${debug}" + # Generic Load + else + run "docker-php-ext-enable ${mod} || true" "${debug}" + fi + else + log "warn" "Enabling PHP Module: '${mod}' does not exist" "${debug}" + fi + done <<< "$( echo "${mods}" | tr ',' '\n' )" + fi +} diff --git a/Dockerfiles/prod/data/docker-entrypoint.d/38-disable-modules.sh b/Dockerfiles/prod/data/docker-entrypoint.d/39-disable-modules.sh similarity index 80% rename from Dockerfiles/prod/data/docker-entrypoint.d/38-disable-modules.sh rename to Dockerfiles/prod/data/docker-entrypoint.d/39-disable-modules.sh index 0c0ee8f..6ddb99e 100755 --- a/Dockerfiles/prod/data/docker-entrypoint.d/38-disable-modules.sh +++ b/Dockerfiles/prod/data/docker-entrypoint.d/39-disable-modules.sh @@ -15,7 +15,7 @@ set -o pipefail disable_modules() { local mod_varname="${1}" local debug="${2}" - local mod_path="/usr/local/etc/php/conf.d" + local cfg_path="/usr/local/etc/php/conf.d" if ! env_set "${mod_varname}"; then log "info" "\$${mod_varname} not set. Not disabling any PHP modules." "${debug}" @@ -23,17 +23,16 @@ disable_modules() { mods="$( env_get "${mod_varname}" )" if [ -z "${mods}" ]; then - log "warn" "\$${mod_varname} set, but empty. Not disabling any PHP modules." "${debug}" + log "info" "\$${mod_varname} set, but empty. Not disabling any PHP modules." "${debug}" else log "info" "Disabling the following PHP modules: ${mods}" "${debug}" fi while read -r mod; do - #for mod in ${mods//,/ }; do mod="$( echo "${mod}" | xargs )" # trim # Find all config files that enable that module - files="$( grep -Er "^(zend_)?extension.*(=|/)${mod}\.so" "${mod_path}" || true )" + files="$( grep -Er "^(zend_)?extension.*(=|/)${mod}\.so" "${cfg_path}" || true )" if [ -n "${files}" ]; then while read -r f; do @@ -44,6 +43,5 @@ disable_modules() { done <<< "${files}" fi done <<< "$( echo "${mods}" | tr ',' '\n' )" - #done fi } diff --git a/Dockerfiles/prod/data/docker-entrypoint.sh b/Dockerfiles/prod/data/docker-entrypoint.sh index 3255fa0..3ee6522 100755 --- a/Dockerfiles/prod/data/docker-entrypoint.sh +++ b/Dockerfiles/prod/data/docker-entrypoint.sh @@ -160,6 +160,12 @@ copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}" copy_fpm_files "${PHP_CUST_FPM_DIR}" "${PHP_FPM_DIR}" "${DEBUG_LEVEL}" +### +### Enable PHP Modules +### +enable_modules "ENABLE_MODULES" "${DEBUG_LEVEL}" + + ### ### Disable PHP Modules ### diff --git a/Dockerfiles/work/data/docker-entrypoint.sh b/Dockerfiles/work/data/docker-entrypoint.sh index 038983b..7e8398a 100755 --- a/Dockerfiles/work/data/docker-entrypoint.sh +++ b/Dockerfiles/work/data/docker-entrypoint.sh @@ -160,6 +160,12 @@ copy_ini_files "${PHP_CUST_INI_DIR}" "${PHP_INI_DIR}" "${DEBUG_LEVEL}" copy_fpm_files "${PHP_CUST_FPM_DIR}" "${PHP_FPM_DIR}" "${DEBUG_LEVEL}" +### +### Enable PHP Modules +### +enable_modules "ENABLE_MODULES" "${DEBUG_LEVEL}" + + ### ### Disable PHP Modules ### diff --git a/README.md b/README.md index 9c766b6..12863ab 100644 --- a/README.md +++ b/README.md @@ -610,7 +610,7 @@ Have a look at the following table to see all supported environment variables fo
TIMEZONEUTC10 in order to enable logging to files. Log files are avilable under /var/log/php/ which is also a docker volume that can be mounted locally.ENABLE_MODULES''ENABLE_MODULES=ioncubeDISABLE_MODULES