From 244605f9b5d89cbec10dee6c1b41fb5701500cde Mon Sep 17 00:00:00 2001 From: cytopia Date: Sat, 9 Feb 2019 12:38:36 +0100 Subject: [PATCH] Add PHP-FPM 8.0 support --- .travis.yml | 1 + Dockerfiles/base/Dockerfile-8.0 | 95 +++ .../base/data/php-fpm.conf/php-fpm-8.0.conf | 134 +++++ Dockerfiles/base/data/php-ini.d/php-8.0.ini | 49 ++ Dockerfiles/mods/Dockerfile-8.0 | 540 ++++++++++++++++++ Dockerfiles/prod/Dockerfile-8.0 | 90 +++ Dockerfiles/work/Dockerfile-8.0 | 377 ++++++++++++ .../work/data/php-fpm.conf/php-fpm-8.0.conf | 134 +++++ Dockerfiles/work/data/php-ini.d/php-8.0.ini | 49 ++ Makefile | 58 +- README.md | 45 +- build/ansible/DOCKERFILES/Dockerfile-base.j2 | 2 + build/ansible/group_vars/all.yml | 110 ++-- build/ansible/inventory | 1 + build/gen-readme.sh | 5 +- 15 files changed, 1638 insertions(+), 52 deletions(-) create mode 100644 Dockerfiles/base/Dockerfile-8.0 create mode 100644 Dockerfiles/base/data/php-fpm.conf/php-fpm-8.0.conf create mode 100644 Dockerfiles/base/data/php-ini.d/php-8.0.ini create mode 100644 Dockerfiles/mods/Dockerfile-8.0 create mode 100644 Dockerfiles/prod/Dockerfile-8.0 create mode 100644 Dockerfiles/work/Dockerfile-8.0 create mode 100644 Dockerfiles/work/data/php-fpm.conf/php-fpm-8.0.conf create mode 100644 Dockerfiles/work/data/php-ini.d/php-8.0.ini diff --git a/.travis.yml b/.travis.yml index 4f7d0d3..ebfa231 100644 --- a/.travis.yml +++ b/.travis.yml @@ -33,6 +33,7 @@ env: - PHP=7.2 - PHP=7.3 - PHP=7.4 + - PHP=8.0 ### diff --git a/Dockerfiles/base/Dockerfile-8.0 b/Dockerfiles/base/Dockerfile-8.0 new file mode 100644 index 0000000..9dcd88a --- /dev/null +++ b/Dockerfiles/base/Dockerfile-8.0 @@ -0,0 +1,95 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead. +FROM devilbox/php-fpm-8.0 +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 8.0 Image" \ + image="devilbox/php-fpm" \ + tag="8.0-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" \ + PHP_VERSION="8.0" + + +### +### User/Group +### +RUN set -x \ + && groupadd -g ${MY_GID} -r ${MY_GROUP} \ + && useradd -u ${MY_UID} -m -s /bin/bash -g ${MY_GROUP} ${MY_USER} + + +### +### Upgrade (install ps) +### +RUN set -x \ + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests procps \ + && rm -rf /var/lib/apt/lists/* + + +### +### Configure +### +RUN set -x \ + && rm -rf /usr/local/etc/php-fpm.d \ + && mkdir -p /usr/local/etc/php-fpm.d \ + && mkdir -p /var/lib/php/session \ + && mkdir -p /var/lib/php/wsdlcache \ + && chown -R devilbox:devilbox /var/lib/php/session \ + && chown -R devilbox:devilbox /var/lib/php/wsdlcache + + +### +### Copy files +### +COPY ./data/php-ini.d/php-8.0.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini +COPY ./data/php-fpm.conf/php-fpm-8.0.conf /usr/local/etc/php-fpm.conf + +COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh +COPY ./data/docker-entrypoint.d /docker-entrypoint.d + + +### +### Verify +### +RUN set -x \ + && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ + && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^8.0' \ + && /usr/local/sbin/php-fpm --test \ + \ + && PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + && PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + \ + && PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && rm -f /usr/local/etc/php/php.ini + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/base/data/php-fpm.conf/php-fpm-8.0.conf b/Dockerfiles/base/data/php-fpm.conf/php-fpm-8.0.conf new file mode 100644 index 0000000..b743989 --- /dev/null +++ b/Dockerfiles/base/data/php-fpm.conf/php-fpm-8.0.conf @@ -0,0 +1,134 @@ +; ################################################################################ +; #### +; #### The following settings can be overwritten by later includes +; #### +; ################################################################################ + + +; ############################################################ +; Timeouts +; ############################################################ + +[www] +; The timeout for serving a single request after which the worker process will be killed. +; This option should be used when the 'max_execution_time' ini option does not stop script +; execution for some reason. +request_terminate_timeout = 120s + + +; ############################################################ +; Logging +; ############################################################ + +[global] +error_log = /proc/self/fd/2 +log_level = notice + +[www] +; if we send this to /proc/self/fd/1, it never appears +access.log = /proc/self/fd/2 + + +; ############################################################ +; Backlog configuration +; ############################################################ + +[www] +; A maximum of backlog incoming connections will be queued for processing. +; If a connection request arrives with the queue full the client may receive an error with an +; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission, +; the request may be ignored so that retries may succeed. + +; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections +; are silently truncated +listen.backlog = 1024 + + +; ############################################################ +; Worker configuration +; ############################################################ + +[www] +; static - the number of child processes is fixed (pm.max_children). +; +; dynamic - the number of child processes is set dynamically based on the following directives: +; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers. +; +; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where +; pm.start_servers are started when the service is started. +pm = ondemand + +; The maximum number of child processes to be created +pm.max_children = 50 + +; The number of child processes created on startup. Used only when pm is set to dynamic. +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2. +pm.start_servers = 4 + +; The desired minimum number of idle server processes. +pm.min_spare_servers = 2 + +; The desired maximum number of idle server processes. +pm.max_spare_servers = 6 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. +; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default value: 0. +pm.max_requests = 500 + +; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand +pm.process_idle_timeout = 10s + + +; ############################################################ +; Include +; ############################################################ + + +[global] +include = /usr/local/etc/php-fpm.d/*.conf + + +; ################################################################################ +; #### +; #### The following settings overwrite any includes again +; #### +; ################################################################################ + + +; ############################################################ +; Required for Dockerization +; ############################################################ + +[global] +daemonize = no + +[www] +; Keep env variables set by docker +clear_env = no + +; Redirect worker stdout and stderr into main error log. If not set, stdout and +; stderr will be redirected to /dev/null according to FastCGI specs. +; Note: on highloaded environement, this can cause some delay in the page +; process time (several ms). +; Default Value: no +catch_workers_output = yes + + +; ############################################################ +; User and Group +; ############################################################ + +[www] +user = devilbox +group = devilbox + + +; ############################################################ +; Networking +; ############################################################ + +[www] +; Ensure to listen here +listen = 9000 diff --git a/Dockerfiles/base/data/php-ini.d/php-8.0.ini b/Dockerfiles/base/data/php-ini.d/php-8.0.ini new file mode 100644 index 0000000..25d4121 --- /dev/null +++ b/Dockerfiles/base/data/php-ini.d/php-8.0.ini @@ -0,0 +1,49 @@ +; ############################################################ +; # Devilbox PHP defaults for 8.0-base +; ############################################################ + +; Each PHP flavour (base, mods, prod, work) might have its own php.ini. +; If none is present, the one from the previous flavour is inherited. + + +[PHP] + +; Memory +; Note: "memory_limit" should be larger than "post_max_size" +memory_limit = 512M + + +; Timeouts +max_execution_time = 120 +max_input_time = 120 + + +; Uploads +; Note: "post_max_size" should be greater than "upload_max_filesize" +post_max_size = 72M +upload_max_filesize = 64M +max_file_uploads = 20 + + +; Vars +variables_order = EGPCS +max_input_vars = 8000 +max_input_nesting_level = 64 + + +; Error reporting +; Note: error_log is dynamic and handled during start to set appropriate setting +error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED +xmlrpc_errors = Off +report_memleaks = On +display_errors = Off +display_startup_errors = Off +log_errors = On +html_errors = Off + + +; Xdebug settings +xdebug.default_enable = Off +xdebug.profiler_enable = Off +xdebug.remote_enable = Off +xdebug.remote_autostart = Off diff --git a/Dockerfiles/mods/Dockerfile-8.0 b/Dockerfiles/mods/Dockerfile-8.0 new file mode 100644 index 0000000..1ba13c9 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-8.0 @@ -0,0 +1,540 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-mods.j2 instead. +FROM devilbox/php-fpm:8.0-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 8.0 Image" \ + image="devilbox/php-fpm" \ + tag="8.0-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + alien \ + firebird-dev \ + freetds-dev \ + libaio-dev \ + libbz2-dev \ + libenchant-dev \ + libevent-dev \ + libfbclient2 \ + libffi-dev \ + libfreetype6-dev \ + libgmp-dev \ + libib-util \ + libicu-dev \ + libjpeg-dev \ + libldap2-dev \ + libmemcached-dev \ + libpng-dev \ + libpq-dev \ + libpspell-dev \ + librecode-dev \ + libsasl2-dev \ + libsnmp-dev \ + libsodium-dev \ + libssl-dev \ + libtidy-dev \ + libvpx-dev \ + libwebp-dev \ + libxml2-dev \ + libxpm-dev \ + libxslt-dev \ + libzip-dev \ + snmp \ + zlib1g-dev \ + ca-certificates \ + git + +ENV RUN_DEPS \ + libaio1 \ + libaspell15 \ + libenchant1c2a \ + libfbclient2 \ + libffi6 \ + libfreetype6 \ + libicu57 \ + libjpeg62-turbo \ + libmemcachedutil2 \ + libpng16-16 \ + libpq5 \ + librecode0 \ + libsybdb5 \ + libtidy5 \ + libvpx4 \ + libwebp6 \ + libxpm4 \ + libxslt1.1 \ + libzip4 \ + snmp \ + ca-certificates + + +### +### Install +### +RUN set -x \ + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + ${BUILD_DEPS} \ + \ + \ +# ---- Installing PHP Extension: bcmath ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ + && (rm -rf /usr/local/lib/php/test/bcmath || true) \ + && (rm -rf /usr/local/lib/php/doc/bcmath || true) \ + \ +# ---- Installing PHP Extension: bz2 ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ + && (rm -rf /usr/local/lib/php/test/bz2 || true) \ + && (rm -rf /usr/local/lib/php/doc/bz2 || true) \ + \ +# ---- Installing PHP Extension: calendar ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ + && (rm -rf /usr/local/lib/php/test/calendar || true) \ + && (rm -rf /usr/local/lib/php/doc/calendar || true) \ + \ +# ---- Installing PHP Extension: dba ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ + && (rm -rf /usr/local/lib/php/test/dba || true) \ + && (rm -rf /usr/local/lib/php/doc/dba || true) \ + \ +# ---- Installing PHP Extension: enchant ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) enchant \ + && (rm -rf /usr/local/lib/php/test/enchant || true) \ + && (rm -rf /usr/local/lib/php/doc/enchant || true) \ + \ +# ---- Installing PHP Extension: exif ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \ + && (rm -rf /usr/local/lib/php/test/exif || true) \ + && (rm -rf /usr/local/lib/php/doc/exif || true) \ + \ +# ---- Installing PHP Extension: ffi ---- + && git clone https://github.com/dstogov/php-ffi /tmp/ffi \ + && cd /tmp/ffi \ + && phpize \ +&& ./configure --with-ffi \ +&& make -j$(getconf _NPROCESSORS_ONLN) \ +&& make install \ + \ + && docker-php-ext-enable ffi \ + && (rm -rf /usr/local/lib/php/test/ffi || true) \ + && (rm -rf /usr/local/lib/php/doc/ffi || true) \ + \ +# ---- Installing PHP Extension: gd ---- + && ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-configure gd --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \ + && (rm -rf /usr/local/lib/php/test/gd || true) \ + && (rm -rf /usr/local/lib/php/doc/gd || true) \ + \ +# ---- Installing PHP Extension: gettext ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ + && (rm -rf /usr/local/lib/php/test/gettext || true) \ + && (rm -rf /usr/local/lib/php/doc/gettext || true) \ + \ +# ---- Installing PHP Extension: gmp ---- + && ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \ + && (rm -rf /usr/local/lib/php/test/gmp || true) \ + && (rm -rf /usr/local/lib/php/doc/gmp || true) \ + \ +# ---- Installing PHP Extension: interbase ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) interbase \ + && (rm -rf /usr/local/lib/php/test/interbase || true) \ + && (rm -rf /usr/local/lib/php/doc/interbase || true) \ + \ +# ---- Installing PHP Extension: intl ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) intl \ + && (rm -rf /usr/local/lib/php/test/intl || true) \ + && (rm -rf /usr/local/lib/php/doc/intl || true) \ + \ +# ---- Installing PHP Extension: ldap ---- + && ln -s /usr/lib/x86_64-linux-gnu/libldap* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-configure ldap --with-ldap --with-ldap-sasl \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ldap \ + && (rm -rf /usr/local/lib/php/test/ldap || true) \ + && (rm -rf /usr/local/lib/php/doc/ldap || true) \ + \ +# ---- Installing PHP Extension: memcached ---- + && git clone https://github.com/php-memcached-dev/php-memcached /tmp/memcached \ + && cd /tmp/memcached \ + && git checkout master \ + && phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install \ + && docker-php-ext-enable memcached \ + && (rm -rf /usr/local/lib/php/test/memcached || true) \ + && (rm -rf /usr/local/lib/php/doc/memcached || true) \ + \ +# ---- Installing PHP Extension: mongodb ---- + && git clone https://github.com/mongodb/mongo-php-driver /tmp/mongodb \ + && cd /tmp/mongodb \ + && git submodule update --init \ +&& phpize \ +&& ./configure --enable-mongodb \ +&& make all \ +&& make install \ + \ + && docker-php-ext-enable mongodb \ + && (rm -rf /usr/local/lib/php/test/mongodb || true) \ + && (rm -rf /usr/local/lib/php/doc/mongodb || true) \ + \ +# ---- Installing PHP Extension: mysqli ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) mysqli \ + && (rm -rf /usr/local/lib/php/test/mysqli || true) \ + && (rm -rf /usr/local/lib/php/doc/mysqli || true) \ + \ +# ---- Installing PHP Extension: oci8 ---- + && rpm --import http://yum.oracle.com/RPM-GPG-KEY-oracle-ol7 \ +&& curl -o /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ +&& curl -o /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ + https://yum.oracle.com/repo/OracleLinux/OL7/oracle/instantclient/x86_64/getPackage/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ +&& alien -i /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ +&& alien -i /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ +&& rm -f /tmp/oracle-instantclient18.3-basiclite-18.3.0.0.0-2.x86_64.rpm \ +&& rm -f /tmp/oracle-instantclient18.3-devel-18.3.0.0.0-2.x86_64.rpm \ +&& (ln -s /usr/lib/oracle/18.3/client64/lib/*.so* /usr/lib/ || true) \ + \ + && /usr/local/bin/docker-php-ext-configure oci8 --with-oci8=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) oci8 \ + && (rm -rf /usr/local/lib/php/test/oci8 || true) \ + && (rm -rf /usr/local/lib/php/doc/oci8 || true) \ + \ +# ---- Installing PHP Extension: opcache ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) opcache \ + && (rm -rf /usr/local/lib/php/test/opcache || true) \ + && (rm -rf /usr/local/lib/php/doc/opcache || true) \ + \ +# ---- Installing PHP Extension: pcntl ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pcntl \ + && (rm -rf /usr/local/lib/php/test/pcntl || true) \ + && (rm -rf /usr/local/lib/php/doc/pcntl || true) \ + \ +# ---- Installing PHP Extension: pdo_dblib ---- + && ln -s /usr/lib/x86_64-linux-gnu/libsybdb.* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_dblib \ + && (rm -rf /usr/local/lib/php/test/pdo_dblib || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo_dblib || true) \ + \ +# ---- Installing PHP Extension: pdo_firebird ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_firebird \ + && (rm -rf /usr/local/lib/php/test/pdo_firebird || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo_firebird || true) \ + \ +# ---- Installing PHP Extension: pdo_mysql ---- + && /usr/local/bin/docker-php-ext-configure pdo_mysql --with-zlib-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_mysql \ + && (rm -rf /usr/local/lib/php/test/pdo_mysql || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo_mysql || true) \ + \ +# ---- Installing PHP Extension: pdo_pgsql ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pdo_pgsql \ + && (rm -rf /usr/local/lib/php/test/pdo_pgsql || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo_pgsql || true) \ + \ +# ---- Installing PHP Extension: pgsql ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pgsql \ + && (rm -rf /usr/local/lib/php/test/pgsql || true) \ + && (rm -rf /usr/local/lib/php/doc/pgsql || true) \ + \ +# ---- Installing PHP Extension: pspell ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) pspell \ + && (rm -rf /usr/local/lib/php/test/pspell || true) \ + && (rm -rf /usr/local/lib/php/doc/pspell || true) \ + \ +# ---- Installing PHP Extension: recode ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) recode \ + && (rm -rf /usr/local/lib/php/test/recode || true) \ + && (rm -rf /usr/local/lib/php/doc/recode || true) \ + \ +# ---- Installing PHP Extension: redis ---- + && git clone https://github.com/phpredis/phpredis /tmp/redis \ + && cd /tmp/redis \ + && phpize \ +&& sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ +&& sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ +&& sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ +&& ./configure \ +&& make -j$(getconf _NPROCESSORS_ONLN) \ +&& make install \ + \ + && docker-php-ext-enable redis \ + && (rm -rf /usr/local/lib/php/test/redis || true) \ + && (rm -rf /usr/local/lib/php/doc/redis || true) \ + \ +# ---- Installing PHP Extension: shmop ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) shmop \ + && (rm -rf /usr/local/lib/php/test/shmop || true) \ + && (rm -rf /usr/local/lib/php/doc/shmop || true) \ + \ +# ---- Installing PHP Extension: snmp ---- + && /usr/local/bin/docker-php-ext-configure snmp --with-openssl-dir \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) snmp \ + && (rm -rf /usr/local/lib/php/test/snmp || true) \ + && (rm -rf /usr/local/lib/php/doc/snmp || true) \ + \ +# ---- Installing PHP Extension: soap ---- + && /usr/local/bin/docker-php-ext-configure soap --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) soap \ + && (rm -rf /usr/local/lib/php/test/soap || true) \ + && (rm -rf /usr/local/lib/php/doc/soap || true) \ + \ +# ---- Installing PHP Extension: sockets ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sockets \ + && (rm -rf /usr/local/lib/php/test/sockets || true) \ + && (rm -rf /usr/local/lib/php/doc/sockets || true) \ + \ +# ---- Installing PHP Extension: sodium ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sodium \ + && (rm -rf /usr/local/lib/php/test/sodium || true) \ + && (rm -rf /usr/local/lib/php/doc/sodium || true) \ + \ +# ---- Installing PHP Extension: sysvmsg ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvmsg \ + && (rm -rf /usr/local/lib/php/test/sysvmsg || true) \ + && (rm -rf /usr/local/lib/php/doc/sysvmsg || true) \ + \ +# ---- Installing PHP Extension: sysvsem ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvsem \ + && (rm -rf /usr/local/lib/php/test/sysvsem || true) \ + && (rm -rf /usr/local/lib/php/doc/sysvsem || true) \ + \ +# ---- Installing PHP Extension: sysvshm ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) sysvshm \ + && (rm -rf /usr/local/lib/php/test/sysvshm || true) \ + && (rm -rf /usr/local/lib/php/doc/sysvshm || true) \ + \ +# ---- Installing PHP Extension: tidy ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) tidy \ + && (rm -rf /usr/local/lib/php/test/tidy || true) \ + && (rm -rf /usr/local/lib/php/doc/tidy || true) \ + \ +# ---- Installing PHP Extension: uploadprogress ---- + && git clone https://github.com/php/pecl-php-uploadprogress /tmp/uploadprogress \ + && cd /tmp/uploadprogress \ + && phpize \ + && ./configure --enable-uploadprogress \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + && docker-php-ext-enable uploadprogress \ + && (rm -rf /usr/local/lib/php/test/uploadprogress || true) \ + && (rm -rf /usr/local/lib/php/doc/uploadprogress || true) \ + \ +# ---- Installing PHP Extension: wddx ---- + && /usr/local/bin/docker-php-ext-configure wddx --with-libxml-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) wddx \ + && (rm -rf /usr/local/lib/php/test/wddx || true) \ + && (rm -rf /usr/local/lib/php/doc/wddx || true) \ + \ +# ---- Installing PHP Extension: xmlrpc ---- + && /usr/local/bin/docker-php-ext-configure xmlrpc --with-libxml-dir=/usr --with-iconv-dir=/usr \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xmlrpc \ + && (rm -rf /usr/local/lib/php/test/xmlrpc || true) \ + && (rm -rf /usr/local/lib/php/doc/xmlrpc || true) \ + \ +# ---- Installing PHP Extension: xsl ---- + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) xsl \ + && (rm -rf /usr/local/lib/php/test/xsl || true) \ + && (rm -rf /usr/local/lib/php/doc/xsl || true) \ + \ +# ---- Installing PHP Extension: zip ---- + && /usr/local/bin/docker-php-ext-configure zip --with-zlib-dir=/usr --with-pcre-dir=/usr --with-libzip \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) zip \ + && (rm -rf /usr/local/lib/php/test/zip || true) \ + && (rm -rf /usr/local/lib/php/doc/zip || true) \ + \ + && if [ -f /usr/local/etc/php/conf.d/docker-php-ext-ffi.ini ]; then \ + echo "ffi.enable = 1" >> /usr/local/etc/php/conf.d/docker-php-ext-ffi.ini; \ + fi \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && rm -rf /tmp/* \ + \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false ${BUILD_DEPS} \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests ${RUN_DEPS} \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ + && rm -rf /var/lib/apt/lists/* \ + \ + && update-ca-certificates \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find "$(php -r 'echo ini_get("extension_dir");')" -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Verify +### +RUN set -x \ + && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ + && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^8.0' \ + && /usr/local/sbin/php-fpm --test \ + \ + && PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + && PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + \ + && PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && rm -f /usr/local/etc/php/php.ini \ + \ + && php -m | grep -oiE '^bcmath$' \ + && php-fpm -m | grep -oiE '^bcmath$' \ + && php -m | grep -oiE '^bz2$' \ + && php-fpm -m | grep -oiE '^bz2$' \ + && php -m | grep -oiE '^calendar$' \ + && php-fpm -m | grep -oiE '^calendar$' \ + && php -m | grep -oiE '^ctype$' \ + && php-fpm -m | grep -oiE '^ctype$' \ + && php -m | grep -oiE '^curl$' \ + && php-fpm -m | grep -oiE '^curl$' \ + && php -m | grep -oiE '^dba$' \ + && php-fpm -m | grep -oiE '^dba$' \ + && php -m | grep -oiE '^dom$' \ + && php-fpm -m | grep -oiE '^dom$' \ + && php -m | grep -oiE '^enchant$' \ + && php-fpm -m | grep -oiE '^enchant$' \ + && php -m | grep -oiE '^exif$' \ + && php-fpm -m | grep -oiE '^exif$' \ + && php -m | grep -oiE '^ffi$' \ + && php-fpm -m | grep -oiE '^ffi$' \ + && php -m | grep -oiE '^fileinfo$' \ + && php-fpm -m | grep -oiE '^fileinfo$' \ + && php -m | grep -oiE '^filter$' \ + && php-fpm -m | grep -oiE '^filter$' \ + && php -m | grep -oiE '^ftp$' \ + && php-fpm -m | grep -oiE '^ftp$' \ + && php -m | grep -oiE '^gd$' \ + && php-fpm -m | grep -oiE '^gd$' \ + && php -m | grep -oiE '^gettext$' \ + && php-fpm -m | grep -oiE '^gettext$' \ + && php -m | grep -oiE '^gmp$' \ + && php-fpm -m | grep -oiE '^gmp$' \ + && php -m | grep -oiE '^hash$' \ + && php-fpm -m | grep -oiE '^hash$' \ + && php -m | grep -oiE '^iconv$' \ + && php-fpm -m | grep -oiE '^iconv$' \ + && php -m | grep -oiE '^interbase$' \ + && php-fpm -m | grep -oiE '^interbase$' \ + && php -m | grep -oiE '^intl$' \ + && php-fpm -m | grep -oiE '^intl$' \ + && php -m | grep -oiE '^json$' \ + && php-fpm -m | grep -oiE '^json$' \ + && php -m | grep -oiE '^ldap$' \ + && php-fpm -m | grep -oiE '^ldap$' \ + && php -m | grep -oiE '^libxml$' \ + && php-fpm -m | grep -oiE '^libxml$' \ + && php -m | grep -oiE '^mbstring$' \ + && php-fpm -m | grep -oiE '^mbstring$' \ + && php -m | grep -oiE '^memcached$' \ + && php-fpm -m | grep -oiE '^memcached$' \ + && php -m | grep -oiE '^mongodb$' \ + && php-fpm -m | grep -oiE '^mongodb$' \ + && php -m | grep -oiE '^mysqli$' \ + && php-fpm -m | grep -oiE '^mysqli$' \ + && php -m | grep -oiE '^mysqlnd$' \ + && php-fpm -m | grep -oiE '^mysqlnd$' \ + && php -m | grep -oiE '^oci8$' \ + && php-fpm -m | grep -oiE '^oci8$' \ + && php -m | grep -oiE '^Zend Opcache$' \ + && php-fpm -m | grep -oiE '^Zend Opcache$' \ + && php -m | grep -oiE '^openssl$' \ + && php-fpm -m | grep -oiE '^openssl$' \ + && php -m | grep -oiE '^pcntl$' \ + && php-fpm -m | grep -oiE '^pcntl$' \ + && php -m | grep -oiE '^pcre$' \ + && php-fpm -m | grep -oiE '^pcre$' \ + && php -m | grep -oiE '^pdo$' \ + && php-fpm -m | grep -oiE '^pdo$' \ + && php -m | grep -oiE '^pdo_dblib$' \ + && php-fpm -m | grep -oiE '^pdo_dblib$' \ + && php -m | grep -oiE '^pdo_firebird$' \ + && php-fpm -m | grep -oiE '^pdo_firebird$' \ + && php -m | grep -oiE '^pdo_mysql$' \ + && php-fpm -m | grep -oiE '^pdo_mysql$' \ + && php -m | grep -oiE '^pdo_pgsql$' \ + && php-fpm -m | grep -oiE '^pdo_pgsql$' \ + && php -m | grep -oiE '^pdo_sqlite$' \ + && php-fpm -m | grep -oiE '^pdo_sqlite$' \ + && php -m | grep -oiE '^pgsql$' \ + && php-fpm -m | grep -oiE '^pgsql$' \ + && php -m | grep -oiE '^phar$' \ + && php-fpm -m | grep -oiE '^phar$' \ + && php -m | grep -oiE '^posix$' \ + && php-fpm -m | grep -oiE '^posix$' \ + && php -m | grep -oiE '^pspell$' \ + && php-fpm -m | grep -oiE '^pspell$' \ + && php -m | grep -oiE '^readline$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^redis$' \ + && php-fpm -m | grep -oiE '^redis$' \ + && php -m | grep -oiE '^reflection$' \ + && php-fpm -m | grep -oiE '^reflection$' \ + && php -m | grep -oiE '^session$' \ + && php-fpm -m | grep -oiE '^session$' \ + && php -m | grep -oiE '^shmop$' \ + && php-fpm -m | grep -oiE '^shmop$' \ + && php -m | grep -oiE '^simplexml$' \ + && php-fpm -m | grep -oiE '^simplexml$' \ + && php -m | grep -oiE '^snmp$' \ + && php-fpm -m | grep -oiE '^snmp$' \ + && php -m | grep -oiE '^soap$' \ + && php-fpm -m | grep -oiE '^soap$' \ + && php -m | grep -oiE '^sockets$' \ + && php-fpm -m | grep -oiE '^sockets$' \ + && php -m | grep -oiE '^sodium$' \ + && php-fpm -m | grep -oiE '^sodium$' \ + && php -m | grep -oiE '^spl$' \ + && php-fpm -m | grep -oiE '^spl$' \ + && php -m | grep -oiE '^sysvmsg$' \ + && php-fpm -m | grep -oiE '^sysvmsg$' \ + && php -m | grep -oiE '^sysvsem$' \ + && php-fpm -m | grep -oiE '^sysvsem$' \ + && php -m | grep -oiE '^sysvshm$' \ + && php-fpm -m | grep -oiE '^sysvshm$' \ + && php -m | grep -oiE '^tidy$' \ + && php-fpm -m | grep -oiE '^tidy$' \ + && php -m | grep -oiE '^tokenizer$' \ + && php-fpm -m | grep -oiE '^tokenizer$' \ + && php -m | grep -oiE '^uploadprogress$' \ + && php-fpm -m | grep -oiE '^uploadprogress$' \ + && php -m | grep -oiE '^wddx$' \ + && php-fpm -m | grep -oiE '^wddx$' \ + && php -m | grep -oiE '^xml$' \ + && php-fpm -m | grep -oiE '^xml$' \ + && php -m | grep -oiE '^xmlreader$' \ + && php-fpm -m | grep -oiE '^xmlreader$' \ + && php -m | grep -oiE '^xmlrpc$' \ + && php-fpm -m | grep -oiE '^xmlrpc$' \ + && php -m | grep -oiE '^xmlwriter$' \ + && php-fpm -m | grep -oiE '^xmlwriter$' \ + && php -m | grep -oiE '^xsl$' \ + && php-fpm -m | grep -oiE '^xsl$' \ + && php -m | grep -oiE '^zip$' \ + && php-fpm -m | grep -oiE '^zip$' \ + && true + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/prod/Dockerfile-8.0 b/Dockerfiles/prod/Dockerfile-8.0 new file mode 100644 index 0000000..33ea901 --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-8.0 @@ -0,0 +1,90 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-prod.j2 instead. +FROM devilbox/php-fpm:8.0-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 8.0 Image" \ + image="devilbox/php-fpm" \ + tag="8.0-prod" \ + vendor="devilbox" \ + license="MIT" + + +### +### Install +### +RUN set -x \ + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + locales-all \ + postfix \ + postfix-pcre \ + cron \ + rsyslog \ + socat \ + supervisor \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ + && rm -rf /var/lib/apt/lists/* \ + \ + && rm -rf /etc/supervisor* \ + && mkdir -p /etc/supervisor/conf.d \ + && mkdir -p /var/log/supervisor \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + + +### +### Verify +### +RUN set -x \ + && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ + && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^8.0' \ + && /usr/local/sbin/php-fpm --test \ + \ + && PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + && PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + \ + && PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && rm -f /usr/local/etc/php/php.ini + + +### +### Copy files +### +COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh +COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/ +COPY ./data/postfix.sh /usr/local/sbin/postfix.sh +COPY ./data/supervisord.conf /etc/supervisor/supervisord.conf + + +### +### Volumes +### +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/work/Dockerfile-8.0 b/Dockerfiles/work/Dockerfile-8.0 new file mode 100644 index 0000000..02bf4a2 --- /dev/null +++ b/Dockerfiles/work/Dockerfile-8.0 @@ -0,0 +1,377 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead. +FROM devilbox/php-fpm:8.0-prod +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 8.0 Image" \ + image="devilbox/php-fpm" \ + tag="8.0-work" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BASH_PROFILE=".bashrc" + + +### +### Install Tools +### +RUN set -x \ + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests apt-utils \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + curl \ + dirmngr \ + gnupg \ + && echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \ + && curl -sS "https://packages.blackfire.io/gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ + && echo "deb http://packages.blackfire.io/debian any main" > /etc/apt/sources.list.d/blackfire.list \ + && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv A1715D88E1DF1F24 \ + && echo "deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main" > /etc/apt/sources.list.d/git.list \ + && APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5 \ + && echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.6 main" > /etc/apt/sources.list.d/mongo.list \ + && curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ + && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ + && curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ + && echo "deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main" > /etc/apt/sources.list.d/pgsql.list \ + && curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - \ + && echo "deb http://dl.yarnpkg.com/debian/ stable main" > /etc/apt/sources.list.d/yarn.list \ + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ + && DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests \ + ack-grep \ + aspell \ + autoconf \ + automake \ + bash-completion \ + binutils \ + blackfire-agent \ + build-essential \ + bzip2 \ + coreutils \ + dnsutils \ + dos2unix \ + file \ + gawk \ + gcc \ + git \ + git-flow \ + git-svn \ + graphviz \ + hostname \ + htop \ + imagemagick \ + iputils-ping \ + jq \ + less \ + libc-dev \ + libffi-dev\ + libssl-dev\ + libyaml-dev \ + make \ + mongodb-org-shell \ + mongodb-org-tools \ + moreutils \ + mysql-client \ + nano \ + net-tools \ + netcat \ + nodejs \ + openssh-client \ + patch \ + patchelf \ + postgresql-client \ + python-cffi \ + python-dev \ + python-pip \ + python-wheel \ + redis-tools \ + rsync \ + rubygems \ + ruby-dev \ + shellcheck \ + silversearcher-ag \ + subversion \ + sudo \ + tig \ + tree \ + unzip \ + vim \ + w3m \ + wget \ + whois \ + wkhtmltopdf \ + xz-utils \ + yarn \ + zip \ + zsh \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false apt-utils \ + && rm -rf /var/lib/apt/lists/* \ + \ +# Get newer pip version + && pip install --upgrade pip \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false python-pip \ + && rm -rf /var/lib/apt/lists/* \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +RUN set -x \ +# composer + && curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ +# ansible + && /usr/local/bin/pip install --no-cache-dir --upgrade setuptools \ +&& /usr/local/bin/pip install --no-cache-dir ansible \ + \ +# awesomeci + && git clone https://github.com/cytopia/awesome-ci.git /usr/local/src/awesome-ci \ +&& cd /usr/local/src/awesome-ci \ +&& git checkout $(git describe --abbrev=0 --tags) \ +&& ./configure --prefix=/usr/local \ +&& make install \ +&& cd / \ +&& rm -rf /usr/local/src/awesome-ci \ + \ + && gem install mixlib-config -v 2.2.4 \ +&& gem install rb-inotify -v 0.9.10 \ +&& gem install mdl \ +&& gem install scss_lint \ +&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y eslint \ +&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y jsonlint \ +&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y mdlint \ +&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y gulp \ +&& rm -rf /tmp/y \ + \ +# deployer + && curl -sS https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \ + && chmod +x /usr/local/bin/dep \ +# drupalconsole + && curl https://drupalconsole.com/installer -L -o /usr/local/bin/drupal \ + && chmod +x /usr/local/bin/drupal \ +# gitflow + && git clone git://github.com/petervanderdoes/gitflow.git /tmp/gitflow \ +&& cd /tmp/gitflow \ +&& make install \ +&& cd / && rm -rf /tmp/gitflow \ + \ +# grunt + && until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt; do sleep 1; done \ +&& until yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y grunt-cli; do sleep 1; done \ +&& rm -rf /tmp/y \ + \ +# linkcheck + && curl https://raw.githubusercontent.com/cytopia/linkcheck/master/linkcheck > /usr/local/bin/linkcheck \ +&& chmod +x /usr/local/bin/linkcheck \ + \ +# linuxbrew + && git clone https://github.com/Linuxbrew/brew.git /usr/local/src/linuxbrew \ +&& chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/linuxbrew \ +&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "PATH=/usr/local/src/linuxbrew/bin:/usr/local/src/linuxbrew/sbin:/usr/bin:/usr/sbin:/bin:/sbin" >> /home/devilbox/${v}' \ +&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "export MANPATH=/usr/local/src/linuxbrew/share/man:${MANPATH}" >> /home/devilbox/${v}' \ +&& v="${BASH_PROFILE}" su ${MY_USER} -c -p \ + 'echo "export INFOPATH=/usr/local/src/linuxbrew/share/man:${INFOPATH}" >> /home/devilbox/${v}' \ +&& su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew config' \ + \ +# mhsendmail + && wget https://github.com/mailhog/mhsendmail/releases/download/v0.2.0/mhsendmail_linux_amd64 \ +&& chmod +x mhsendmail_linux_amd64 \ +&& mv mhsendmail_linux_amd64 /usr/local/bin/mhsendmail \ + \ +# mysqldumpsecure + && git clone https://github.com/cytopia/mysqldump-secure.git /usr/local/src/mysqldump-secure \ +&& cd /usr/local/src/mysqldump-secure \ +&& git checkout $(git describe --abbrev=0 --tags) \ +&& cp /usr/local/src/mysqldump-secure/bin/mysqldump-secure /usr/local/bin \ +&& cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.conf /etc \ +&& cp /usr/local/src/mysqldump-secure/etc/mysqldump-secure.cnf /etc \ +&& touch /var/log/mysqldump-secure.log \ +&& chown ${MY_USER}:${MY_GROUP} /etc/mysqldump-secure.* \ +&& chown ${MY_USER}:${MY_GROUP} /var/log/mysqldump-secure.log \ +&& chmod 0400 /etc/mysqldump-secure.conf \ +&& chmod 0400 /etc/mysqldump-secure.cnf \ +&& chmod 0644 /var/log/mysqldump-secure.log \ +&& sed -i'' 's/^COMPRESS_ARG=.*/COMPRESS_ARG="-9 -c"/g' /etc/mysqldump-secure.conf \ +&& sed -i'' 's/^DUMP_DIR=.*/DUMP_DIR="\/shared\/backups\/mysql"/g' /etc/mysqldump-secure.conf \ +&& sed -i'' 's/^DUMP_DIR_CHMOD=.*/DUMP_DIR_CHMOD="0755"/g' /etc/mysqldump-secure.conf \ +&& sed -i'' 's/^DUMP_FILE_CHMOD=.*/DUMP_FILE_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ +&& sed -i'' 's/^LOG_CHMOD=.*/LOG_CHMOD="0644"/g' /etc/mysqldump-secure.conf \ +&& sed -i'' 's/^NAGIOS_LOG=.*/NAGIOS_LOG=0/g' /etc/mysqldump-secure.conf \ +&& cd / \ +&& rm -rf /usr/local/src/mysqldump-secure \ + \ +# phpcs + && curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ +&& chmod +x /usr/local/bin/phpcs \ + \ +# phpcbf + && curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ +&& chmod +x /usr/local/bin/phpcbf \ + \ +# pm2 + && until npm install pm2 -g; do sleep 1; done \ +# sass + && gem install sass \ +# symfony + && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ + && chmod +x /usr/local/bin/symfony \ +# webpack + && yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack \ +&& yarn global add --prod --non-interactive --link-duplicates --silent --cache-folder /tmp/y webpack-cli \ +&& rm -rf /tmp/y \ + \ +# wpcli + && curl https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar -L -o /usr/local/bin/wp \ + && chmod +x /usr/local/bin/wp \ +# yamllint + && DEBIAN_FRONTEND=noninteractive apt-get update -qq \ +&& DEBIAN_FRONTEND=noninteractive apt-get install -qq -y --no-install-recommends --no-install-suggests libpython-dev python-setuptools libyaml-dev \ + \ + && /usr/local/bin/pip install --no-cache-dir yamllint \ + && DEBIAN_FRONTEND=noninteractive apt-get purge -qq -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false libpython-dev python-setuptools libyaml-dev \ +&& rm -rf /var/lib/apt/lists/* \ + \ +# cleanup + && rm -rf /home/${MY_USER}/.*json \ +&& rm -rf /home/${MY_USER}/.cache \ +&& rm -rf /home/${MY_USER}/.composer \ +&& rm -rf /home/${MY_USER}/.config \ +&& rm -rf /home/${MY_USER}/.drush \ +&& rm -rf /home/${MY_USER}/.gem \ +&& rm -rf /home/${MY_USER}/.npm \ +&& rm -rf /home/${MY_USER}/.subversion \ +&& rm -rf /home/${MY_USER}/.v8* \ +\ +&& rm -rf /root/.*json \ +&& rm -rf /root/.cache \ +&& rm -rf /root/.composer \ +&& rm -rf /root/.config \ +&& rm -rf /root/.drush \ +&& rm -rf /root/.gem \ +&& rm -rf /root/.npm \ +&& rm -rf /root/.subversion \ +&& rm -rf /root/.v8* \ +\ +&& rm -rf /tmp/* \ + \ + \ + && (rm -rf /usr/local/src/composer/cache/* || true) \ + \ + && (find /usr/local/bin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/lib -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) \ + && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 strip --strip-all -p 2>/dev/null || true) + + +### +### Configure Bash +### +RUN \ + { \ + echo "PATH=\${PATH}:/usr/local/bin:/usr/local/sbin:/usr/local/node/bin"; \ + echo "export PATH"; \ + echo ". /etc/bash-devilbox"; \ + echo "if [ -d /etc/bashrc-devilbox.d/ ]; then"; \ + echo " for f in /etc/bashrc-devilbox.d/*.sh ; do"; \ + echo " if [ -r \"\${f}\" ]; then"; \ + echo " . \"\${f}\""; \ + echo " fi"; \ + echo " done"; \ + echo " unset f"; \ + echo "fi"; \ + } | tee -a /home/${MY_USER}/${BASH_PROFILE} /root/${BASH_PROFILE} \ + && chown ${MY_USER}:${MY_GROUP} /home/${MY_USER}/${BASH_PROFILE} + + +### +### Verify +### +RUN set -x \ + && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini \ + && php -v | grep -oE 'PHP\s[.0-9]+' | grep -oE '[.0-9]+' | grep '^8.0' \ + && /usr/local/sbin/php-fpm --test \ + \ + && PHP_ERROR="$( php -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + && PHP_ERROR="$( php -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_ERROR}" ]; then echo "${PHP_ERROR}"; false; fi \ + \ + && PHP_FPM_ERROR="$( php-fpm -v 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && PHP_FPM_ERROR="$( php-fpm -i 2>&1 1>/dev/null )" \ + && if [ -n "${PHP_FPM_ERROR}" ]; then echo "${PHP_FPM_ERROR}"; false; fi \ + && rm -f /usr/local/etc/php/php.ini + +RUN set -x \ + && composer --version 2>/dev/null | grep -E 'version\s*[.0-9]+' \ + && ansible --version | grep -E '^ansible [.0-9]+$' \ + && mdl --version | grep -E '[.0-9]+' \ +&& scss-lint --version | grep -E '[.0-9]+' \ +&& eslint -v | grep -E '[.0-9]+' \ +&& jsonlint --version | grep -E '[.0-9]+' \ +&& mdlint --version | grep -E '[.0-9]+' \ +&& gulp --version | grep -E '[.0-9]+' \ + \ + && dep --version 2>/dev/null | grep -Ei 'deployer\s*(version\s*)?[.0-9]+' \ + && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ + && git-flow version | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && linkcheck --version | grep -E '^linkcheck\sv[.0-9]+' \ + && su - ${MY_USER} -c '/usr/local/src/linuxbrew/bin/brew --version' | grep -E 'Homebrew\s*[.0-9]+' \ + && mysqldump-secure --version | grep -E 'Version:\s*[.0-9]+' \ + && phpcs --version | grep -E 'version [.0-9]+' \ + && phpcbf --version | grep -E 'version [.0-9]+' \ + && pm2 --no-daemon --version | grep -E '[.0-9]+' \ + && sass --version | grep -E '[.0-9]+' \ + && symfony --version | grep -E 'version\s*[.0-9]+' \ + && webpack --version | grep -E '[.0-9]+' \ + && wp --allow-root --version | grep -E '[.0-9]+' \ + && yamllint --version 2>&1 | grep -E '[.0-9]+' \ + && true + + +### +### Copy files +### +COPY ./data/php-ini.d/php-8.0.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini +COPY ./data/php-fpm.conf/php-fpm-8.0.conf /usr/local/etc/php-fpm.conf + +COPY ./data/docker-entrypoint.sh /docker-entrypoint.sh +COPY ./data/docker-entrypoint.d/*.sh /docker-entrypoint.d/ +COPY ./data/bash-devilbox /etc/bash-devilbox +COPY ./data/sudo-devilbox /etc/sudoers.d/devilbox + + + +### +### Volumes +### +VOLUME /shared/backups +VOLUME /var/log/php +VOLUME /var/mail + + +### +### Ports +### +EXPOSE 9000 + + +### +### Where to start inside the container +### +WORKDIR /shared/httpd + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/work/data/php-fpm.conf/php-fpm-8.0.conf b/Dockerfiles/work/data/php-fpm.conf/php-fpm-8.0.conf new file mode 100644 index 0000000..b743989 --- /dev/null +++ b/Dockerfiles/work/data/php-fpm.conf/php-fpm-8.0.conf @@ -0,0 +1,134 @@ +; ################################################################################ +; #### +; #### The following settings can be overwritten by later includes +; #### +; ################################################################################ + + +; ############################################################ +; Timeouts +; ############################################################ + +[www] +; The timeout for serving a single request after which the worker process will be killed. +; This option should be used when the 'max_execution_time' ini option does not stop script +; execution for some reason. +request_terminate_timeout = 120s + + +; ############################################################ +; Logging +; ############################################################ + +[global] +error_log = /proc/self/fd/2 +log_level = notice + +[www] +; if we send this to /proc/self/fd/1, it never appears +access.log = /proc/self/fd/2 + + +; ############################################################ +; Backlog configuration +; ############################################################ + +[www] +; A maximum of backlog incoming connections will be queued for processing. +; If a connection request arrives with the queue full the client may receive an error with an +; indication of ECONNREFUSED, or, if the underlying protocol supports retransmission, +; the request may be ignored so that retries may succeed. + +; This should not be greater than `cat /proc/sys/net/core/somaxconn`, otherwise connections +; are silently truncated +listen.backlog = 1024 + + +; ############################################################ +; Worker configuration +; ############################################################ + +[www] +; static - the number of child processes is fixed (pm.max_children). +; +; dynamic - the number of child processes is set dynamically based on the following directives: +; pm.max_children, pm.start_servers, pm.min_spare_servers, pm.max_spare_servers. +; +; ondemand - the processes spawn on demand (when requested, as opposed to dynamic, where +; pm.start_servers are started when the service is started. +pm = ondemand + +; The maximum number of child processes to be created +pm.max_children = 50 + +; The number of child processes created on startup. Used only when pm is set to dynamic. +; Default Value: min_spare_servers + (max_spare_servers - min_spare_servers) / 2. +pm.start_servers = 4 + +; The desired minimum number of idle server processes. +pm.min_spare_servers = 2 + +; The desired maximum number of idle server processes. +pm.max_spare_servers = 6 + +; The number of requests each child process should execute before respawning. +; This can be useful to work around memory leaks in 3rd party libraries. +; For endless request processing specify '0'. Equivalent to PHP_FCGI_MAX_REQUESTS. +; Default value: 0. +pm.max_requests = 500 + +; The number of seconds after which an idle process will be killed. Used only when pm is set to ondemand +pm.process_idle_timeout = 10s + + +; ############################################################ +; Include +; ############################################################ + + +[global] +include = /usr/local/etc/php-fpm.d/*.conf + + +; ################################################################################ +; #### +; #### The following settings overwrite any includes again +; #### +; ################################################################################ + + +; ############################################################ +; Required for Dockerization +; ############################################################ + +[global] +daemonize = no + +[www] +; Keep env variables set by docker +clear_env = no + +; Redirect worker stdout and stderr into main error log. If not set, stdout and +; stderr will be redirected to /dev/null according to FastCGI specs. +; Note: on highloaded environement, this can cause some delay in the page +; process time (several ms). +; Default Value: no +catch_workers_output = yes + + +; ############################################################ +; User and Group +; ############################################################ + +[www] +user = devilbox +group = devilbox + + +; ############################################################ +; Networking +; ############################################################ + +[www] +; Ensure to listen here +listen = 9000 diff --git a/Dockerfiles/work/data/php-ini.d/php-8.0.ini b/Dockerfiles/work/data/php-ini.d/php-8.0.ini new file mode 100644 index 0000000..b8ae839 --- /dev/null +++ b/Dockerfiles/work/data/php-ini.d/php-8.0.ini @@ -0,0 +1,49 @@ +; ############################################################ +; # Devilbox PHP defaults for 8.0-work +; ############################################################ + +; Each PHP flavour (base, mods, prod, work) might have its own php.ini. +; If none is present, the one from the previous flavour is inherited. + + +[PHP] + +; Memory +; Note: "memory_limit" should be larger than "post_max_size" +memory_limit = 512M + + +; Timeouts +max_execution_time = 120 +max_input_time = 120 + + +; Uploads +; Note: "post_max_size" should be greater than "upload_max_filesize" +post_max_size = 72M +upload_max_filesize = 64M +max_file_uploads = 20 + + +; Vars +variables_order = EGPCS +max_input_vars = 8000 +max_input_nesting_level = 64 + + +; Error reporting +; Note: error_log is dynamic and handled during start to set appropriate setting +error_reporting = E_ALL | E_NOTICE | E_STRICT | E_DEPRECATED +xmlrpc_errors = Off +report_memleaks = On +display_errors = On +display_startup_errors = On +log_errors = On +html_errors = On + + +; Xdebug settings +xdebug.default_enable = Off +xdebug.profiler_enable = Off +xdebug.remote_enable = Off +xdebug.remote_autostart = Off diff --git a/Makefile b/Makefile index 4c5aa0a..4fd29ab 100644 --- a/Makefile +++ b/Makefile @@ -37,6 +37,7 @@ help: @printf "%s\n" "make build-base-72: Build PHP 7.2 base image" @printf "%s\n" "make build-base-73: Build PHP 7.3 base image" @printf "%s\n" "make build-base-74: Build PHP 7.4 base image" + @printf "%s\n" "make build-base-80: Build PHP 8.0 base image" @printf "\n" @printf "%s\n" "make build-mods-52: Build PHP 5.2 mods image" @printf "%s\n" "make build-mods-53: Build PHP 5.3 mods image" @@ -48,6 +49,7 @@ help: @printf "%s\n" "make build-mods-72: Build PHP 7.2 mods image" @printf "%s\n" "make build-mods-73: Build PHP 7.3 mods image" @printf "%s\n" "make build-mods-74: Build PHP 7.4 mods image" + @printf "%s\n" "make build-mods-80: Build PHP 8.0 mods image" @printf "\n" @printf "%s\n" "make build-prod-52: Build PHP 5.2 prod image" @printf "%s\n" "make build-prod-53: Build PHP 5.3 prod image" @@ -59,6 +61,7 @@ help: @printf "%s\n" "make build-prod-72: Build PHP 7.2 prod image" @printf "%s\n" "make build-prod-73: Build PHP 7.3 prod image" @printf "%s\n" "make build-prod-74: Build PHP 7.4 prod image" + @printf "%s\n" "make build-prod-80: Build PHP 8.0 prod image" @printf "\n" @printf "%s\n" "make build-work-52: Build PHP 5.2 work image" @printf "%s\n" "make build-work-53: Build PHP 5.3 work image" @@ -70,6 +73,7 @@ help: @printf "%s\n" "make build-work-72: Build PHP 7.2 work image" @printf "%s\n" "make build-work-73: Build PHP 7.3 work image" @printf "%s\n" "make build-work-74: Build PHP 7.4 work image" + @printf "%s\n" "make build-work-80: Build PHP 8.0 work image" @printf "\n" @printf "%s\n" "make rebuild-base-52: Build PHP 5.2 base image" @printf "%s\n" "make rebuild-base-53: Build PHP 5.3 base image" @@ -81,6 +85,7 @@ help: @printf "%s\n" "make rebuild-base-72: Build PHP 7.2 base image" @printf "%s\n" "make rebuild-base-73: Build PHP 7.3 base image" @printf "%s\n" "make rebuild-base-74: Build PHP 7.4 base image" + @printf "%s\n" "make rebuild-base-80: Build PHP 8.0 base image" @printf "\n" @printf "%s\n" "make rebuild-mods-52: Build PHP 5.2 mods image" @printf "%s\n" "make rebuild-mods-53: Build PHP 5.3 mods image" @@ -92,6 +97,7 @@ help: @printf "%s\n" "make rebuild-mods-72: Build PHP 7.2 mods image" @printf "%s\n" "make rebuild-mods-73: Build PHP 7.3 mods image" @printf "%s\n" "make rebuild-mods-74: Build PHP 7.4 mods image" + @printf "%s\n" "make rebuild-mods-80: Build PHP 8.0 mods image" @printf "\n" @printf "%s\n" "make rebuild-prod-52: Build PHP 5.2 prod image" @printf "%s\n" "make rebuild-prod-53: Build PHP 5.3 prod image" @@ -103,6 +109,7 @@ help: @printf "%s\n" "make rebuild-prod-72: Build PHP 7.2 prod image" @printf "%s\n" "make rebuild-prod-73: Build PHP 7.3 prod image" @printf "%s\n" "make rebuild-prod-74: Build PHP 7.4 prod image" + @printf "%s\n" "make rebuild-prod-80: Build PHP 8.0 prod image" @printf "\n" @printf "%s\n" "make rebuild-work-52: Build PHP 5.2 work image" @printf "%s\n" "make rebuild-work-53: Build PHP 5.3 work image" @@ -114,6 +121,7 @@ help: @printf "%s\n" "make rebuild-work-72: Build PHP 7.2 work image" @printf "%s\n" "make rebuild-work-73: Build PHP 7.3 work image" @printf "%s\n" "make rebuild-work-74: Build PHP 7.4 work image" + @printf "%s\n" "make rebuild-work-80: Build PHP 8.0 work image" @@ -149,15 +157,15 @@ rebuild-all: rebuild-base rebuild-mods rebuild-prod rebuild-work ### ### Build categories ### -build-base: build-base-52 build-base-53 build-base-54 build-base-55 build-base-56 build-base-70 build-base-71 build-base-72 build-base-73 build-base-74 -build-mods: build-mods-52 build-mods-53 build-mods-54 build-mods-55 build-mods-56 build-mods-70 build-mods-71 build-mods-72 build-mods-73 build-mods-74 -build-prod: build-prod-52 build-prod-53 build-prod-54 build-prod-55 build-prod-56 build-prod-70 build-prod-71 build-prod-72 build-prod-73 build-prod-74 -build-work: build-work-52 build-work-53 build-work-54 build-work-55 build-work-56 build-work-70 build-work-71 build-work-72 build-work-73 build-work-74 +build-base: build-base-52 build-base-53 build-base-54 build-base-55 build-base-56 build-base-70 build-base-71 build-base-72 build-base-73 build-base-74 build-base-80 +build-mods: build-mods-52 build-mods-53 build-mods-54 build-mods-55 build-mods-56 build-mods-70 build-mods-71 build-mods-72 build-mods-73 build-mods-74 build-mods-80 +build-prod: build-prod-52 build-prod-53 build-prod-54 build-prod-55 build-prod-56 build-prod-70 build-prod-71 build-prod-72 build-prod-73 build-prod-74 build-prod-80 +build-work: build-work-52 build-work-53 build-work-54 build-work-55 build-work-56 build-work-70 build-work-71 build-work-72 build-work-73 build-work-74 build-work-80 -rebuild-base: rebuild-base-52 rebuild-base-53 rebuild-base-54 rebuild-base-55 rebuild-base-56 rebuild-base-70 rebuild-base-71 rebuild-base-72 rebuild-base-73 rebuild-base-74 -rebuild-mods: rebuild-mods-52 rebuild-mods-53 rebuild-mods-54 rebuild-mods-55 rebuild-mods-56 rebuild-mods-70 rebuild-mods-71 rebuild-mods-72 rebuild-mods-73 rebuild-mods-74 -rebuild-prod: rebuild-prod-52 rebuild-prod-53 rebuild-prod-54 rebuild-prod-55 rebuild-prod-56 rebuild-prod-70 rebuild-prod-71 rebuild-prod-72 rebuild-prod-73 rebuild-prod-74 -rebuild-work: rebuild-work-52 rebuild-work-53 rebuild-work-54 rebuild-work-55 rebuild-work-56 rebuild-work-70 rebuild-work-71 rebuild-work-72 rebuild-work-73 rebuild-work-74 +rebuild-base: rebuild-base-52 rebuild-base-53 rebuild-base-54 rebuild-base-55 rebuild-base-56 rebuild-base-70 rebuild-base-71 rebuild-base-72 rebuild-base-73 rebuild-base-74 rebuild-base-80 +rebuild-mods: rebuild-mods-52 rebuild-mods-53 rebuild-mods-54 rebuild-mods-55 rebuild-mods-56 rebuild-mods-70 rebuild-mods-71 rebuild-mods-72 rebuild-mods-73 rebuild-mods-74 rebuild-mods-80 +rebuild-prod: rebuild-prod-52 rebuild-prod-53 rebuild-prod-54 rebuild-prod-55 rebuild-prod-56 rebuild-prod-70 rebuild-prod-71 rebuild-prod-72 rebuild-prod-73 rebuild-prod-74 rebuild-prod-80 +rebuild-work: rebuild-work-52 rebuild-work-53 rebuild-work-54 rebuild-work-55 rebuild-work-56 rebuild-work-70 rebuild-work-71 rebuild-work-72 rebuild-work-73 rebuild-work-74 rebuild-work-80 @@ -184,6 +192,8 @@ build-base-73: pull-from-73 docker build -t devilbox/php-fpm:7.3-base -f $(location)/base/Dockerfile-7.3 $(location)/base build-base-74: pull-from-74 docker build -t devilbox/php-fpm:7.4-base -f $(location)/base/Dockerfile-7.4 $(location)/base +build-base-80: pull-from-80 + docker build -t devilbox/php-fpm:8.0-base -f $(location)/base/Dockerfile-8.0 $(location)/base build-mods-52: docker build -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods @@ -205,6 +215,8 @@ build-mods-73: docker build -t devilbox/php-fpm:7.3-mods -f $(location)/mods/Dockerfile-7.3 $(location)/mods build-mods-74: docker build -t devilbox/php-fpm:7.4-mods -f $(location)/mods/Dockerfile-7.4 $(location)/mods +build-mods-80: + docker build -t devilbox/php-fpm:8.0-mods -f $(location)/mods/Dockerfile-8.0 $(location)/mods build-prod-52: docker build -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod @@ -226,6 +238,8 @@ build-prod-73: docker build -t devilbox/php-fpm:7.3-prod -f $(location)/prod/Dockerfile-7.3 $(location)/prod build-prod-74: docker build -t devilbox/php-fpm:7.4-prod -f $(location)/prod/Dockerfile-7.4 $(location)/prod +build-prod-80: + docker build -t devilbox/php-fpm:8.0-prod -f $(location)/prod/Dockerfile-8.0 $(location)/prod build-work-52: docker build -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work @@ -247,6 +261,8 @@ build-work-73: docker build -t devilbox/php-fpm:7.3-work -f $(location)/work/Dockerfile-7.3 $(location)/work build-work-74: docker build -t devilbox/php-fpm:7.4-work -f $(location)/work/Dockerfile-7.4 $(location)/work +build-work-80: + docker build -t devilbox/php-fpm:8.0-work -f $(location)/work/Dockerfile-8.0 $(location)/work @@ -273,6 +289,8 @@ rebuild-base-73: pull-from-73 docker build --no-cache -t devilbox/php-fpm:7.3-base -f $(location)/base/Dockerfile-7.3 $(location)/base rebuild-base-74: pull-from-74 docker build --no-cache -t devilbox/php-fpm:7.4-base -f $(location)/base/Dockerfile-7.4 $(location)/base +rebuild-base-80: pull-from-80 + docker build --no-cache -t devilbox/php-fpm:8.0-base -f $(location)/base/Dockerfile-8.0 $(location)/base rebuild-mods-52: docker build --no-cache -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods @@ -294,6 +312,8 @@ rebuild-mods-73: docker build --no-cache -t devilbox/php-fpm:7.3-mods -f $(location)/mods/Dockerfile-7.3 $(location)/mods rebuild-mods-74: docker build --no-cache -t devilbox/php-fpm:7.4-mods -f $(location)/mods/Dockerfile-7.4 $(location)/mods +rebuild-mods-80: + docker build --no-cache -t devilbox/php-fpm:8.0-mods -f $(location)/mods/Dockerfile-8.0 $(location)/mods rebuild-prod-52: docker build --no-cache -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod @@ -315,6 +335,8 @@ rebuild-prod-73: docker build --no-cache -t devilbox/php-fpm:7.3-prod -f $(location)/prod/Dockerfile-7.3 $(location)/prod rebuild-prod-74: docker build --no-cache -t devilbox/php-fpm:7.4-prod -f $(location)/prod/Dockerfile-7.4 $(location)/prod +rebuild-prod-80: + docker build --no-cache -t devilbox/php-fpm:8.0-prod -f $(location)/prod/Dockerfile-8.0 $(location)/prod rebuild-work-52: docker build --no-cache -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work @@ -336,6 +358,8 @@ rebuild-work-73: docker build --no-cache -t devilbox/php-fpm:7.3-work -f $(location)/work/Dockerfile-7.3 $(location)/work rebuild-work-74: docker build --no-cache -t devilbox/php-fpm:7.4-work -f $(location)/work/Dockerfile-7.4 $(location)/work +rebuild-work-80: + docker build --no-cache -t devilbox/php-fpm:8.0-work -f $(location)/work/Dockerfile-8.0 $(location)/work @@ -362,6 +386,8 @@ pull-from-73: docker pull $(shell grep FROM $(location)/base/Dockerfile-7.3 | sed 's/^FROM\s*//g';) pull-from-74: docker pull $(shell grep FROM $(location)/base/Dockerfile-7.4 | sed 's/^FROM\s*//g';) +pull-from-80: + docker pull $(shell grep FROM $(location)/base/Dockerfile-8.0 | sed 's/^FROM\s*//g';) ### @@ -369,10 +395,10 @@ pull-from-74: ### test-all: test-base test-mods test-prod test-work -test-base: test-base-52 test-base-53 test-base-54 test-base-55 test-base-56 test-base-70 test-base-71 test-base-72 test-base-73 test-base-74 -test-mods: test-mods-52 test-mods-53 test-mods-54 test-mods-55 test-mods-56 test-mods-70 test-mods-71 test-mods-72 test-mods-73 test-mods-74 -test-prod: test-prod-52 test-prod-53 test-prod-54 test-prod-55 test-prod-56 test-prod-70 test-prod-71 test-prod-72 test-prod-73 test-prod-74 -test-work: test-work-52 test-work-53 test-work-54 test-work-55 test-work-56 test-work-70 test-work-71 test-work-72 test-work-73 test-work-74 +test-base: test-base-52 test-base-53 test-base-54 test-base-55 test-base-56 test-base-70 test-base-71 test-base-72 test-base-73 test-base-74 test-base-80 +test-mods: test-mods-52 test-mods-53 test-mods-54 test-mods-55 test-mods-56 test-mods-70 test-mods-71 test-mods-72 test-mods-73 test-mods-74 test-mods-80 +test-prod: test-prod-52 test-prod-53 test-prod-54 test-prod-55 test-prod-56 test-prod-70 test-prod-71 test-prod-72 test-prod-73 test-prod-74 test-prod-80 +test-work: test-work-52 test-work-53 test-work-54 test-work-55 test-work-56 test-work-70 test-work-71 test-work-72 test-work-73 test-work-74 test-work-80 ### @@ -398,6 +424,8 @@ test-base-73: ./tests/test.sh 7.3 base test-base-74: ./tests/test.sh 7.4 base +test-base-80: + ./tests/test.sh 8.0 base test-mods-52: ./tests/test.sh 5.2 mods @@ -419,6 +447,8 @@ test-mods-73: ./tests/test.sh 7.3 mods test-mods-74: ./tests/test.sh 7.4 mods +test-mods-80: + ./tests/test.sh 8.0 mods test-prod-52: ./tests/test.sh 5.2 prod @@ -440,6 +470,8 @@ test-prod-73: ./tests/test.sh 7.3 prod test-prod-74: ./tests/test.sh 7.4 prod +test-prod-80: + ./tests/test.sh 8.0 prod test-work-52: ./tests/test.sh 5.2 work @@ -461,3 +493,5 @@ test-work-73: ./tests/test.sh 7.3 work test-work-74: ./tests/test.sh 7.4 work +test-work-80: + ./tests/test.sh 8.0 work diff --git a/README.md b/README.md index 8e5f7dc..3d75c71 100644 --- a/README.md +++ b/README.md @@ -173,7 +173,7 @@ The following table shows a more complete overview about the offered Docker imag - base + base devilbox/php-fpm:5.2-base @@ -242,9 +242,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:8.0-base + + + + + - mods + mods devilbox/php-fpm:5.2-mods @@ -314,9 +321,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:8.0-mods + + + + + - prod + prod devilbox/php-fpm:5.2-prod @@ -386,9 +400,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:8.0-prod + + + + + - work + work devilbox/php-fpm:5.2-work @@ -458,6 +479,13 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:8.0-work + + + + + @@ -573,6 +601,11 @@ Check out this table to see which Docker image provides what PHP modules. Core, ctype, curl, date, dom, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, interbase, intl, json, ldap, libxml, mbstring, memcached, mongodb, mysqli, mysqlnd, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, PDO_OCI, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, rdkafka, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, swoole, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib + + 8.0 + Core, ctype, curl, date, dom, fileinfo, filter, ftp, hash, iconv, json, libxml, mbstring, mysqlnd, openssl, pcre, PDO, pdo_sqlite, Phar, posix, readline, Reflection, session, SimpleXML, sodium, SPL, sqlite3, standard, tokenizer, xml, xmlreader, xmlwriter, zlib + bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, FFI, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, interbase, intl, json, ldap, libxml, mbstring, memcached, mysqli, mysqlnd, oci8, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, readline, recode, redis, Reflection, session, shmop, SimpleXML, snmp, soap, sockets, sodium, SPL, sqlite3, standard, sysvmsg, sysvsem, sysvshm, tidy, tokenizer, uploadprogress, wddx, xml, xmlreader, xmlrpc, xmlwriter, xsl, Zend OPcache, zip, zlib + @@ -592,6 +625,7 @@ docker pull devilbox/php-fpm:7.1-base docker pull devilbox/php-fpm:7.2-base docker pull devilbox/php-fpm:7.3-base docker pull devilbox/php-fpm:7.4-base +docker pull devilbox/php-fpm:8.0-base ``` Generic PHP-FPM base image. Use it to derive your own php-fpm docker image from it and add more extensions, tools and injectables.

(Does not offer any environment variables except for `NEW_UID` and `NEW_GID`) @@ -608,6 +642,7 @@ docker pull devilbox/php-fpm:7.1-mods docker pull devilbox/php-fpm:7.2-mods docker pull devilbox/php-fpm:7.3-mods docker pull devilbox/php-fpm:7.4-mods +docker pull devilbox/php-fpm:8.0-mods ``` Generic PHP-FPM image with fully loaded extensions. Use it to derive your own php-fpm docker image from it and add more extensions, tools and injectables.

(Does not offer any environment variables except for `NEW_UID` and `NEW_GID`) @@ -624,6 +659,7 @@ docker pull devilbox/php-fpm:7.1-prod docker pull devilbox/php-fpm:7.2-prod docker pull devilbox/php-fpm:7.3-prod docker pull devilbox/php-fpm:7.4-prod +docker pull devilbox/php-fpm:8.0-prod ``` Devilbox production image. This Docker image comes with many injectables, port-forwardings, mail-catch-all and user/group rewriting. @@ -640,6 +676,7 @@ docker pull devilbox/php-fpm:7.1-work docker pull devilbox/php-fpm:7.2-work docker pull devilbox/php-fpm:7.3-work docker pull devilbox/php-fpm:7.4-work +docker pull devilbox/php-fpm:8.0-work ``` Devilbox development image. Same as prod, but comes with lots of locally installed tools to make development inside the container as convenient as possible. See [Integrated Development Environment](#integrated-development-environment) for more information about this. diff --git a/build/ansible/DOCKERFILES/Dockerfile-base.j2 b/build/ansible/DOCKERFILES/Dockerfile-base.j2 index d3016ae..81c17a9 100644 --- a/build/ansible/DOCKERFILES/Dockerfile-base.j2 +++ b/build/ansible/DOCKERFILES/Dockerfile-base.j2 @@ -5,6 +5,8 @@ FROM devilbox/php-fpm-5.2 FROM devilbox/php-fpm-5.3 {% elif php_version == 7.4 %} FROM devilbox/php-fpm-7.4 +{% elif php_version == 8.0 %} +FROM devilbox/php-fpm-8.0 {% else %} FROM php:{{ php_version }}-fpm {% endif %} diff --git a/build/ansible/group_vars/all.yml b/build/ansible/group_vars/all.yml index 0efe02d..d401c81 100644 --- a/build/ansible/group_vars/all.yml +++ b/build/ansible/group_vars/all.yml @@ -19,6 +19,7 @@ php_all_versions: - 7.2 - 7.3 - 7.4 + - 8.0 ### @@ -259,6 +260,8 @@ apt_repositories_available: deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main 7.4: deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main + 8.0: + deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main all: deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main key: A1715D88E1DF1F24 @@ -273,6 +276,8 @@ apt_repositories_available: deb: deb http://deb.nodesource.com/node_8.x stretch main 7.4: deb: deb http://deb.nodesource.com/node_8.x stretch main + 8.0: + deb: deb http://deb.nodesource.com/node_8.x stretch main all: deb: deb http://deb.nodesource.com/node_8.x jessie main pre: curl -sS "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - @@ -283,6 +288,8 @@ apt_repositories_available: deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main 7.4: deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main + 8.0: + deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main all: deb: deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main pre: curl -sS https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | APT_KEY_DONT_WARN_ON_DANGEROUS_USAGE=1 apt-key add - @@ -307,7 +314,7 @@ apt_repositories_available: # software_available: asgardcms: - disabled: [5.2, 5.3, 5.4] + disabled: [5.2, 5.3, 5.4, 8.0] check: asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.0-9]+' all: command: | @@ -368,7 +375,7 @@ software_available: command: curl -sS https://deployer.org/deployer.phar -L -o /usr/local/bin/dep post: chmod +x /usr/local/bin/dep drush7: - disabled: [5.2] + disabled: [5.2, 8.0] check: drush7 --version | grep -E '7[.0-9]+\s*$' all: pre: | @@ -384,7 +391,7 @@ software_available: && rm -rf /usr/local/src/drush7/examples \ && rm -rf /usr/local/src/drush7/misc \ drush8: - disabled: [5.2, 5.3] + disabled: [5.2, 5.3, 8.0] check: drush8 --version | grep -E '8[.0-9]+\s*$' all: pre: | @@ -400,7 +407,7 @@ software_available: && rm -rf /usr/local/src/drush8/examples \ && rm -rf /usr/local/src/drush8/misc \ drush9: - disabled: [5.2, 5.3, 5.4, 5.5] + disabled: [5.2, 5.3, 5.4, 5.5, 8.0] check: drush9 --version | grep -E '9[.0-9]+\s*$' all: pre: | @@ -416,7 +423,7 @@ software_available: && rm -rf /usr/local/src/drush9/examples \ && rm -rf /usr/local/src/drush9/misc \ codeception: - disabled: [5.2] + disabled: [5.2, 8.0] check: codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' all: command: | @@ -445,7 +452,7 @@ software_available: && rm -rf /tmp/y \ laravel: check: laravel --version | grep -E '(Installer|version)\s*[.0-9]+' - disabled: [5.2, 5.3] + disabled: [5.2, 5.3, 8.0] 5.4: pre: | git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ @@ -526,7 +533,7 @@ software_available: && cd / \ && rm -rf /usr/local/src/mysqldump-secure \ phalcon: - disabled: [5.2, 7.3, 7.4] + disabled: [5.2, 7.3, 7.4, 8.0] check: phalcon commands | grep -E '[.0-9]+' 5.3: pre: | @@ -578,7 +585,7 @@ software_available: curl -sS -L https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ && chmod +x /usr/local/bin/phpcbf \ php-cs-fixer: - disabled: [5.2, 7.4] + disabled: [5.2, 7.4, 8.0] check: php-cs-fixer --version 2>&1 | grep -E 'Fixer\s+(version\s*)?[-_.0-9]+\s+' 5.3: command: | @@ -597,7 +604,7 @@ software_available: curl -sS -L https://cs.symfony.com/download/php-cs-fixer-v2.phar > /usr/local/bin/php-cs-fixer 2>/dev/null \ && chmod +x /usr/local/bin/php-cs-fixer \ phpunit: - disabled: [5.2] + disabled: [5.2, 8.0] check: phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' 5.3: command: | @@ -624,7 +631,7 @@ software_available: curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \ && chmod +x /usr/local/bin/phpunit \ photon: - disabled: [5.2, 5.3, 5.4] + disabled: [5.2, 5.3, 5.4, 8.0] check: photon --version | grep -E 'Installer [.0-9]+' all: command: | @@ -827,7 +834,7 @@ extensions_enabled: # command: [required] Custom command to install and enable a module extensions_available: amqp: - disabled: [7.3, 7.4] + disabled: [7.3, 7.4, 8.0] 5.2: run_dep: [librabbitmq1] type: pecl @@ -850,7 +857,7 @@ extensions_available: build_dep: [librabbitmq-dev] run_dep: [librabbitmq4] apcu: - disabled: [5.2, 7.4] + disabled: [5.2, 7.4, 8.0] 5.3: type: pecl version: 4.0.11 @@ -869,7 +876,7 @@ extensions_available: all: type: builtin blackfire: - disabled: [5.2, 5.3, 5.4, 5.5, 7.4] + disabled: [5.2, 5.3, 5.4, 5.5, 7.4, 8.0] all: type: custom command: | @@ -919,7 +926,7 @@ extensions_available: build_dep: [libffi-dev] run_dep: [libffi6] fileinfo: - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] 5.2: type: pecl build_dep: [libmagic-dev] @@ -928,7 +935,7 @@ extensions_available: filter: already_avail: "{{ php_all_versions }}" # Available by default ftp: - already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] all: type: builtin configure: --with-openssl-dir @@ -982,6 +989,9 @@ extensions_available: 7.4: type: builtin configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv + 8.0: + type: builtin + configure: --with-gd --with-webp-dir=/usr --with-jpeg-dir=/usr --with-png-dir=/usr --with-zlib-dir=/usr --with-xpm-dir=/usr --with-freetype-dir=/usr --enable-gd-jis-conv all: type: builtin pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ @@ -1002,13 +1012,14 @@ extensions_available: iconv: already_avail: "{{ php_all_versions }}" igbinary: + disabled: [8.0] 5.2: type: pecl version: 2.0.7 all: type: pecl imagick: - disabled: [5.2, 7.4] + disabled: [5.2, 7.4, 8.0] 5.3: type: pecl version: 3.3.0 @@ -1024,8 +1035,7 @@ extensions_available: build_dep: [libmagickwand-dev] run_dep: [libmagickwand-6.q16-3] imap: - disabled: [7.4] # TODO: re-enable. currently fails with: configure: error: OpenSSL libraries not found. - + disabled: [7.4, 8.0] # TODO: re-enable. currently fails with: configure: error: OpenSSL libraries not found. all: type: builtin pre: ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ @@ -1055,7 +1065,7 @@ extensions_available: build_dep: [libicu-dev] run_dep: [libicu57] ioncube: - disabled: [7.3, 7.4] + disabled: [7.3, 7.4, 8.0] all: type: custom command: | @@ -1079,11 +1089,11 @@ extensions_available: libxml: already_avail: "{{ php_all_versions }}" # Available by default mbstring: - already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] all: type: builtin mcrypt: - disabled: [7.4] + disabled: [7.4, 8.0] 7.2: type: pecl version: 1.0.1 @@ -1095,7 +1105,7 @@ extensions_available: run_dep: [libmcrypt4] build_dep: [libmcrypt-dev] memcache: - disabled: [7.3, 7.4] + disabled: [7.3, 7.4, 8.0] 7.0: type: git git_url: https://github.com/websupport-sk/pecl-memcache @@ -1132,13 +1142,18 @@ extensions_available: git_url: https://github.com/php-memcached-dev/php-memcached git_ref: master command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install + 8.0: + type: git + git_url: https://github.com/php-memcached-dev/php-memcached + git_ref: master + command: phpize && ./configure --enable-memcached && make -j$(getconf _NPROCESSORS_ONLN) && make install all: type: pecl #version: 3.0.4 # TODO: check if this version works build_dep: [zlib1g-dev, libmemcached-dev, libevent-dev] run_dep: [libmemcachedutil2] mongo: - disabled: [7.0, 7.1, 7.2, 7.3, 7.4] # Deprecated + disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated 5.2: type: pecl command: yes | pecl install mongo-1.5.8 @@ -1154,11 +1169,20 @@ extensions_available: 5.4: type: pecl version: 1.2.11 + 8.0: + type: git + git_url: https://github.com/mongodb/mongo-php-driver + command: | + git submodule update --init \ + && phpize \ + && ./configure --enable-mongodb \ + && make all \ + && make install \ all: type: pecl build_dep: [libssl-dev, libsasl2-dev] msgpack: - disabled: [7.4] + disabled: [7.4, 8.0] 5.2: type: pecl version: 0.5.7 @@ -1178,7 +1202,7 @@ extensions_available: type: pecl mysql: already_avail: [5.2, 5.3] - disabled: [7.0, 7.1, 7.2, 7.3, 7.4] # Deprecated in newer versions + disabled: [7.0, 7.1, 7.2, 7.3, 7.4, 8.0] # Deprecated in newer versions 5.6: type: builtin run_dep: [libmariadbclient18] @@ -1191,7 +1215,7 @@ extensions_available: type: builtin mysqlnd: disabled: [5.2] - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] oci8: disabled: [5.2] all: @@ -1251,7 +1275,7 @@ extensions_available: configure: --with-zlib-dir=/usr build_dep: [zlib1g-dev] pdo_oci: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6] + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 8.0] 7.4: type: builtin configure: --with-pdo-oci=instantclient,/usr/lib/oracle/18.3/client64/lib/,18.3 @@ -1286,7 +1310,7 @@ extensions_available: pdo_sqlite: already_avail: "{{ php_all_versions }}" pdo_sqlsrv: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4] + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] 7.3: type: pecl version: 5.5.0preview @@ -1302,7 +1326,7 @@ extensions_available: build_dep: [libpq-dev] run_dep: [libpq5] phalcon: - disabled: [5.2, 7.4] + disabled: [5.2, 7.4, 8.0] 5.3: type: git git_url: https://github.com/phalcon/cphalcon @@ -1339,7 +1363,7 @@ extensions_available: git_ref: $(git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | sed 's/^.*tags\///g' | grep -E '^v[.0-9]+$' | tail -1) command: cd build && ./install phar: - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] 5.2: type: pecl build_dep: [libssl-dev] @@ -1374,12 +1398,24 @@ extensions_available: && ./configure \ && make -j$(getconf _NPROCESSORS_ONLN) \ && make install \ + 8.0: + type: git + git_url: https://github.com/phpredis/phpredis + # This is a nasty work-around to fix current phpredis implementation for PHP 7.4 + command: | + phpize \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_DTOR | //g' redis.c \ + && sed -i'' 's/ZEND_ACC_CTOR | //g' redis_cluster.c \ + && ./configure \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ all: type: pecl reflection: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4, 8.0] rdkafka: - disabled: [5.2] + disabled: [5.2, 8.0] all: type: pecl build_dep: [librdkafka-dev] @@ -1415,7 +1451,7 @@ extensions_available: spl: already_avail: "{{ php_all_versions }}" sqlsrv: - disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4] + disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.4, 8.0] 7.3: type: pecl version: 5.5.0preview @@ -1426,7 +1462,7 @@ extensions_available: build_dep: [unixodbc-dev] run_dep: [unixodbc] swoole: - disabled: [5.2] + disabled: [5.2, 8.0] 5.3: type: pecl version: 1.9.23 @@ -1529,6 +1565,10 @@ extensions_available: type: git git_url: https://github.com/php/pecl-php-uploadprogress configure: --enable-uploadprogress + 8.0: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress all: type: pecl wddx: @@ -1537,7 +1577,7 @@ extensions_available: configure: --with-libxml-dir=/usr build_dep: [libxml2-dev] xdebug: - disabled: [7.4] + disabled: [7.4, 8.0] 5.2: type: pecl version: 2.2.7 diff --git a/build/ansible/inventory b/build/ansible/inventory index a3360ff..22568fa 100644 --- a/build/ansible/inventory +++ b/build/ansible/inventory @@ -9,3 +9,4 @@ php-7.1 php_version=7.1 ansible_connection=local php-7.2 php_version=7.2 ansible_connection=local php-7.3 php_version=7.3 ansible_connection=local php-7.4 php_version=7.4 ansible_connection=local +php-8.0 php_version=8.0 ansible_connection=local diff --git a/build/gen-readme.sh b/build/gen-readme.sh index 717d850..12e2892 100755 --- a/build/gen-readme.sh +++ b/build/gen-readme.sh @@ -24,6 +24,7 @@ print_usage() { echo " gen-readme.sh 7.2" echo " gen-readme.sh 7.3" echo " gen-readme.sh 7.4" + echo " gen-readme.sh 8.0" } @@ -92,6 +93,7 @@ if [ "${#}" -eq "0" ]; then update_readme "7.2" update_readme "7.3" update_readme "7.4" + update_readme "8.0" elif [ "${#}" -gt "1" ]; then # Specifying more than 1 argument is wrong echo "Error, invalid number of arguments." @@ -107,7 +109,8 @@ else && [ "${1}" != "7.1" ] \ && [ "${1}" != "7.2" ] \ && [ "${1}" != "7.3" ] \ - && [ "${1}" != "7.4" ]; then + && [ "${1}" != "7.4" ] \ + && [ "${1}" != "8.0" ]; then # Argument does not match any of the PHP versions echo "Error, invalid argument." print_usage