From 24ec18d05158658cbc79b720379bda3c95415a83 Mon Sep 17 00:00:00 2001 From: cytopia Date: Fri, 2 Nov 2018 15:14:15 +0100 Subject: [PATCH] Add PHP-FPM 7.4 built from source --- .travis.yml | 1 + Dockerfiles/base/Dockerfile-7.4 | 95 +++ .../base/data/php-fpm.conf/php-fpm-7.4.conf | 134 ++++ Dockerfiles/base/data/php-ini.d/php-7.4.ini | 49 ++ Dockerfiles/mods/Dockerfile-7.4 | 648 ++++++++++++++++++ Dockerfiles/prod/Dockerfile-7.4 | 92 +++ Dockerfiles/work/Dockerfile-7.4 | 439 ++++++++++++ .../work/data/php-fpm.conf/php-fpm-7.4.conf | 134 ++++ Dockerfiles/work/data/php-ini.d/php-7.4.ini | 49 ++ Makefile | 58 +- README.md | 45 +- build/ansible/DOCKERFILES/Dockerfile-base.j2 | 2 + build/ansible/group_vars/all.yml | 127 +++- build/ansible/inventory | 1 + build/gen-readme.sh | 5 +- 15 files changed, 1829 insertions(+), 50 deletions(-) create mode 100644 Dockerfiles/base/Dockerfile-7.4 create mode 100644 Dockerfiles/base/data/php-fpm.conf/php-fpm-7.4.conf create mode 100644 Dockerfiles/base/data/php-ini.d/php-7.4.ini create mode 100644 Dockerfiles/mods/Dockerfile-7.4 create mode 100644 Dockerfiles/prod/Dockerfile-7.4 create mode 100644 Dockerfiles/work/Dockerfile-7.4 create mode 100644 Dockerfiles/work/data/php-fpm.conf/php-fpm-7.4.conf create mode 100644 Dockerfiles/work/data/php-ini.d/php-7.4.ini diff --git a/.travis.yml b/.travis.yml index f85f4a2..8ad09f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -32,6 +32,7 @@ env: - PHP=7.1 - PHP=7.2 - PHP=7.3 + - PHP=7.4 ### diff --git a/Dockerfiles/base/Dockerfile-7.4 b/Dockerfiles/base/Dockerfile-7.4 new file mode 100644 index 0000000..384e0e0 --- /dev/null +++ b/Dockerfiles/base/Dockerfile-7.4 @@ -0,0 +1,95 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-base.j2 instead. +FROM devilbox/php-fpm-7.4 +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.4 Image" \ + image="devilbox/php-fpm" \ + tag="7.4-base" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV MY_USER="devilbox" \ + MY_GROUP="devilbox" \ + MY_UID="1000" \ + MY_GID="1000" \ + PHP_VERSION="7.4" + + +### +### 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-7.4.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini +COPY ./data/php-fpm.conf/php-fpm-7.4.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 '^7.4' \ + && /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-7.4.conf b/Dockerfiles/base/data/php-fpm.conf/php-fpm-7.4.conf new file mode 100644 index 0000000..b743989 --- /dev/null +++ b/Dockerfiles/base/data/php-fpm.conf/php-fpm-7.4.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-7.4.ini b/Dockerfiles/base/data/php-ini.d/php-7.4.ini new file mode 100644 index 0000000..a5be8cb --- /dev/null +++ b/Dockerfiles/base/data/php-ini.d/php-7.4.ini @@ -0,0 +1,49 @@ +; ############################################################ +; # Devilbox PHP defaults for 7.4-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-7.4 b/Dockerfiles/mods/Dockerfile-7.4 new file mode 100644 index 0000000..90b4e75 --- /dev/null +++ b/Dockerfiles/mods/Dockerfile-7.4 @@ -0,0 +1,648 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-mods.j2 instead. +FROM devilbox/php-fpm:7.4-base +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.4 Image" \ + image="devilbox/php-fpm" \ + tag="7.4-mods" \ + vendor="devilbox" \ + license="MIT" + + +### +### Envs +### +ENV BUILD_DEPS \ + cmake \ + firebird-dev \ + freetds-dev \ + libbz2-dev \ + libc-client-dev \ + libcurl4-openssl-dev \ + libenchant-dev \ + libfbclient2 \ + libfreetype6-dev \ + libgmp-dev \ + libhiredis-dev \ + libib-util \ + libicu-dev \ + libjpeg-dev \ + libkrb5-dev \ + libldap2-dev \ + libmemcached-dev \ + libnghttp2-dev \ + libpng-dev \ + libpq-dev \ + libpspell-dev \ + librdkafka-dev \ + librecode-dev \ + libsasl2-dev \ + libsnmp-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 \ + libaspell15 \ + libc-client2007e \ + libenchant1c2a \ + libfbclient2 \ + libfreetype6 \ + libhiredis0.13 \ + libicu57 \ + libjpeg62-turbo \ + libmemcachedutil2 \ + libnghttp2-14 \ + libpng16-16 \ + libpq5 \ + librdkafka1 \ + 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} \ + \ + \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/ctype || true) \ + && (rm -rf /usr/local/lib/php/doc/ctype || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/curl || true) \ + && (rm -rf /usr/local/lib/php/doc/curl || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/dom || true) \ + && (rm -rf /usr/local/lib/php/doc/dom || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/fileinfo || true) \ + && (rm -rf /usr/local/lib/php/doc/fileinfo || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/filter || true) \ + && (rm -rf /usr/local/lib/php/doc/filter || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/ftp || true) \ + && (rm -rf /usr/local/lib/php/doc/ftp || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/hash || true) \ + && (rm -rf /usr/local/lib/php/doc/hash || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/iconv || true) \ + && (rm -rf /usr/local/lib/php/doc/iconv || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && pecl install igbinary \ + && docker-php-ext-enable igbinary \ + \ + && (rm -rf /usr/local/lib/php/test/igbinary || true) \ + && (rm -rf /usr/local/lib/php/doc/igbinary || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && ln -s /usr/lib/x86_64-linux-gnu/libkrb5* /usr/lib/ \ + && /usr/local/bin/docker-php-ext-configure imap --with-kerberos --with-imap-ssl --with-imap \ + && /usr/local/bin/docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) imap \ + \ + && (rm -rf /usr/local/lib/php/test/imap || true) \ + && (rm -rf /usr/local/lib/php/doc/imap || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/json || true) \ + && (rm -rf /usr/local/lib/php/doc/json || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/libxml || true) \ + && (rm -rf /usr/local/lib/php/doc/libxml || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/mbstring || true) \ + && (rm -rf /usr/local/lib/php/doc/mbstring || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && git clone -v 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && pecl install mongodb \ + && docker-php-ext-enable mongodb \ + \ + && (rm -rf /usr/local/lib/php/test/mongodb || true) \ + && (rm -rf /usr/local/lib/php/doc/mongodb || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/mysqlnd || true) \ + && (rm -rf /usr/local/lib/php/doc/mysqlnd || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/openssl || true) \ + && (rm -rf /usr/local/lib/php/doc/openssl || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/pcre || true) \ + && (rm -rf /usr/local/lib/php/doc/pcre || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/pdo || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/pdo_sqlite || true) \ + && (rm -rf /usr/local/lib/php/doc/pdo_sqlite || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/phar || true) \ + && (rm -rf /usr/local/lib/php/doc/phar || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/posix || true) \ + && (rm -rf /usr/local/lib/php/doc/posix || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/readline || true) \ + && (rm -rf /usr/local/lib/php/doc/readline || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && pecl install rdkafka \ + && docker-php-ext-enable rdkafka \ + \ + && (rm -rf /usr/local/lib/php/test/rdkafka || true) \ + && (rm -rf /usr/local/lib/php/doc/rdkafka || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/session || true) \ + && (rm -rf /usr/local/lib/php/doc/session || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/simplexml || true) \ + && (rm -rf /usr/local/lib/php/doc/simplexml || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/sodium || true) \ + && (rm -rf /usr/local/lib/php/doc/sodium || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && git clone -v https://github.com/swoole/swoole-src /tmp/swoole \ + && cd /tmp/swoole \ + && git checkout master \ + && git checkout $(git describe --abbrev=0 --tags) \ +&& git submodule update --init --recursive \ +&& cd thirdparty/hiredis \ +&& make -j$(getconf _NPROCESSORS_ONLN) \ +&& make install \ +&& cd ../nghttp2 \ +&& cmake . \ +&& make install \ +&& ldconfig \ +&& cd ../.. \ +&& phpize \ +&& ./configure \ + --enable-async-redis \ + --enable-openssl \ + --enable-thread \ + --enable-swoole \ + --enable-swoole-static \ + --with-swoole \ + --with-openssl-dir=/usr \ + --enable-mysqlnd \ + --enable-coroutine \ + --enable-picohttpparser \ + #`--enable-timewheel` \ + #`--enable-hugepage` \ + #`--enable-asan` \ + #`--with-phpx-dir=` \ + #`--with-jemalloc-dir=/usr/include/jemalloc` \ + #`--enable-coroutine-postgresql` \ + #`--enable-http2` \ + #`--enable-sockets` \ + #`--with-libpq-dir=/usr/include/postgresql/libpq/` \ +&& make -j$(getconf _NPROCESSORS_ONLN) \ +&& make install \ + \ + && docker-php-ext-enable swoole \ + \ + && (rm -rf /usr/local/lib/php/test/swoole || true) \ + && (rm -rf /usr/local/lib/php/doc/swoole || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/tokenizer || true) \ + && (rm -rf /usr/local/lib/php/doc/tokenizer || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && git clone -v 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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/xml || true) \ + && (rm -rf /usr/local/lib/php/doc/xml || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/xmlreader || true) \ + && (rm -rf /usr/local/lib/php/doc/xmlreader || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + \ + && (rm -rf /usr/local/lib/php/test/xmlwriter || true) \ + && (rm -rf /usr/local/lib/php/doc/xmlwriter || true) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && chmod +x "$(php -r 'echo ini_get("extension_dir");')"/* \ + && /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) \ + && 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 '^7.4' \ + && /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 '^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 '^igbinary$' \ + && php-fpm -m | grep -oiE '^igbinary$' \ + && php -m | grep -oiE '^imap$' \ + && php-fpm -m | grep -oiE '^imap$' \ + && 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 '^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-fpm -m | grep -oiE '^readline$' \ + && php -m | grep -oiE '^recode$' \ + && php-fpm -m | grep -oiE '^recode$' \ + && php -m | grep -oiE '^rdkafka$' \ + && php-fpm -m | grep -oiE '^rdkafka$' \ + && 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 '^swoole$' \ + && php-fpm -m | grep -oiE '^swoole$' \ + && 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-7.4 b/Dockerfiles/prod/Dockerfile-7.4 new file mode 100644 index 0000000..0cace17 --- /dev/null +++ b/Dockerfiles/prod/Dockerfile-7.4 @@ -0,0 +1,92 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-prod.j2 instead. +FROM devilbox/php-fpm:7.4-mods +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.4 Image" \ + image="devilbox/php-fpm" \ + tag="7.4-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 \ + 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 '^7.4' \ + && /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 /etc/php-custom.d +VOLUME /etc/php-fpm-custom.d +VOLUME /etc/php-modules.d +VOLUME /var/log/php +VOLUME /var/mail + + + +### +### Ports +### +EXPOSE 9000 + + +### +### Entrypoint +### +ENTRYPOINT ["/docker-entrypoint.sh"] diff --git a/Dockerfiles/work/Dockerfile-7.4 b/Dockerfiles/work/Dockerfile-7.4 new file mode 100644 index 0000000..042b5ce --- /dev/null +++ b/Dockerfiles/work/Dockerfile-7.4 @@ -0,0 +1,439 @@ +# Auto-generated via Ansible: edit build/ansible/DOCKERFILES/Dockerfile-work.j2 instead. +FROM devilbox/php-fpm:7.4-prod +MAINTAINER "cytopia" + + +### +### Labels +### +LABEL \ + name="cytopia's PHP-FPM 7.4 Image" \ + image="devilbox/php-fpm" \ + tag="7.4-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 \ + dirmngr \ + gnupg \ + && echo "deb http://ftp.debian.org/debian jessie-backports main" > /etc/apt/sources.list.d/backports.list \ + && 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 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 -q "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | apt-key add - \ + && echo "deb http://deb.nodesource.com/node_8.x stretch main" > /etc/apt/sources.list.d/node.list \ + && curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | 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 | 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 \ + build-essential \ + bzip2 \ + coreutils \ + curl \ + dnsutils \ + dos2unix \ + file \ + 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 \ + 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 \ + 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 \ + \ +# asgardcms + && COMPOSER_HOME="/usr/local/src/composer" composer global require asgardcms/asgardcms-installer \ +&& ln -s /usr/local/src/composer/vendor/asgardcms/asgardcms-installer/asgardcms /usr/local/bin/asgardcms \ + \ +# 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 mdl \ +&& gem install scss_lint \ +&& npm install -g eslint \ +&& npm install -g jsonlint \ +&& npm install -g mdlint \ +&& npm install -g gulp \ + \ +# codeception + && COMPOSER_HOME="/usr/local/src/composer" composer global require codeception/codeception \ +&& ln -s /usr/local/src/composer/vendor/codeception/codeception/codecept /usr/local/bin/codecept \ + \ +# deployer + && curl https://deployer.org/deployer.phar -L -o /usr/local/bin/dep \ + && chmod +x /usr/local/bin/dep \ +# drush7 + && git clone https://github.com/drush-ops/drush.git /usr/local/src/drush7 \ +&& cd /usr/local/src/drush7 \ +&& git checkout 7.4.0 \ + \ + && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush7 \ +&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush7 && composer install --no-interaction --no-progress --no-dev' \ +&& ln -s /usr/local/src/drush7/drush /usr/local/bin/drush7 \ +&& rm -rf /usr/local/src/drush7/.git \ +&& rm -rf /usr/local/src/drush7/docs \ +&& rm -rf /usr/local/src/drush7/examples \ +&& rm -rf /usr/local/src/drush7/misc \ + \ +# drush8 + && git clone https://github.com/drush-ops/drush.git /usr/local/src/drush8 \ +&& cd /usr/local/src/drush8 \ +&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/8[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ + \ + && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush8 \ +&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush8 && composer install --no-interaction --no-progress --no-dev' \ +&& ln -s /usr/local/src/drush8/drush /usr/local/bin/drush8 \ +&& rm -rf /usr/local/src/drush8/.git \ +&& rm -rf /usr/local/src/drush8/docs \ +&& rm -rf /usr/local/src/drush8/examples \ +&& rm -rf /usr/local/src/drush8/misc \ + \ +# drush9 + && git clone https://github.com/drush-ops/drush.git /usr/local/src/drush9 \ +&& cd /usr/local/src/drush9 \ +&& git checkout $( git for-each-ref --format='%(*creatordate:raw)%(creatordate:raw) %(refname)' refs/tags | sort -n | grep -E 'tags/9[.0-9]+$' | tail -1 | sed 's|.*/||g' ) \ + \ + && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/drush9 \ +&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/drush9 && composer install --no-interaction --no-progress --no-dev' \ +&& ln -s /usr/local/src/drush9/drush /usr/local/bin/drush9 \ +&& rm -rf /usr/local/src/drush9/.git \ +&& rm -rf /usr/local/src/drush9/docs \ +&& rm -rf /usr/local/src/drush9/examples \ +&& rm -rf /usr/local/src/drush9/misc \ + \ +# 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 + && npm install -g grunt \ +&& npm install -g grunt-cli \ + \ +# laravel + && git clone https://github.com/laravel/installer /usr/local/src/laravel-installer \ +&& cd /usr/local/src/laravel-installer \ +&& git checkout $(git describe --abbrev=0 --tags) \ + \ + && chown -R ${MY_USER}:${MY_GROUP} /usr/local/src/laravel-installer \ +&& su - ${MY_USER} -c 'PATH=/usr/local/bin:$PATH; cd /usr/local/src/laravel-installer && composer install --no-interaction --no-progress --no-dev' \ +&& ln -s /usr/local/src/laravel-installer/laravel /usr/local/bin/laravel \ +&& rm -rf /usr/local/src/laravel-installer/laravel/.git \ + \ +# 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 update' \ +&& 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 -q https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar > /usr/local/bin/phpcs 2>/dev/null \ +&& chmod +x /usr/local/bin/phpcs \ + \ +# phpcbf + && curl -q https://squizlabs.github.io/PHP_CodeSniffer/phpcbf.phar > /usr/local/bin/phpcbf 2>/dev/null \ +&& chmod +x /usr/local/bin/phpcbf \ + \ +# phpunit + && curl -qL https://phar.phpunit.de/phpunit-7.phar > /usr/local/bin/phpunit 2>/dev/null \ +&& chmod +x /usr/local/bin/phpunit \ + \ +# photon + && COMPOSER_HOME="/usr/local/src/composer" composer global require "photoncms/installer" \ +&& ln -s /usr/local/src/composer/vendor/photoncms/installer/photon /usr/local/bin/photon \ + \ +# sass + && gem install sass \ +# symfony + && curl https://symfony.com/installer -L -o /usr/local/bin/symfony \ + && chmod +x /usr/local/bin/symfony \ +# webpack + && npm install -g webpack \ +&& npm install -g webpack-cli \ + \ +# 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 /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 /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 '^7.4' \ + && /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]+$' \ + && asgardcms --version 2>/dev/null | grep -Ei 'AsgardCMS\sInstaller\s[.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]+' \ + \ + && codecept --version 2>/dev/null | grep -E '^Codeception(\sversion)?\s[.0-9]+$' \ + && dep --version 2>/dev/null | grep -E 'Deployer\s*[.0-9]+' \ + && drush7 --version | grep -E '7[.0-9]+\s*$' \ + && drush8 --version | grep -E '8[.0-9]+\s*$' \ + && drush9 --version | grep -E '9[.0-9]+\s*$' \ + && drupal --version | grep -E 'Drupal Console Launcher\s*[.0-9]' \ + && git-flow version | grep -E '[.0-9]+' \ + && grunt --version | grep -E '[.0-9]+' \ + && laravel --version | grep -E '(Installer|version)\s*[.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]+' \ + && phpunit --version | grep -iE '^PHPUnit\s[.0-9]+' \ + && photon --version | grep -E 'Installer [.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-7.4.ini /usr/local/etc/php/conf.d/xxx-devilbox-default-php.ini +COPY ./data/php-fpm.conf/php-fpm-7.4.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 /etc/bashrc-devilbox.d +VOLUME /etc/php-custom.d +VOLUME /etc/php-fpm-custom.d +VOLUME /etc/php-modules.d +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-7.4.conf b/Dockerfiles/work/data/php-fpm.conf/php-fpm-7.4.conf new file mode 100644 index 0000000..b743989 --- /dev/null +++ b/Dockerfiles/work/data/php-fpm.conf/php-fpm-7.4.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-7.4.ini b/Dockerfiles/work/data/php-ini.d/php-7.4.ini new file mode 100644 index 0000000..cfa9f90 --- /dev/null +++ b/Dockerfiles/work/data/php-ini.d/php-7.4.ini @@ -0,0 +1,49 @@ +; ############################################################ +; # Devilbox PHP defaults for 7.4-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 df1e3d3..4c5aa0a 100644 --- a/Makefile +++ b/Makefile @@ -36,6 +36,7 @@ help: @printf "%s\n" "make build-base-71: Build PHP 7.1 base image" @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 "\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" @@ -46,6 +47,7 @@ help: @printf "%s\n" "make build-mods-71: Build PHP 7.1 mods image" @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 "\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" @@ -56,6 +58,7 @@ help: @printf "%s\n" "make build-prod-71: Build PHP 7.1 prod image" @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 "\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" @@ -66,6 +69,7 @@ help: @printf "%s\n" "make build-work-71: Build PHP 7.1 work image" @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 "\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" @@ -76,6 +80,7 @@ help: @printf "%s\n" "make rebuild-base-71: Build PHP 7.1 base image" @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 "\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" @@ -86,6 +91,7 @@ help: @printf "%s\n" "make rebuild-mods-71: Build PHP 7.1 mods image" @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 "\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" @@ -96,6 +102,7 @@ help: @printf "%s\n" "make rebuild-prod-71: Build PHP 7.1 prod image" @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 "\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" @@ -106,6 +113,7 @@ help: @printf "%s\n" "make rebuild-work-71: Build PHP 7.1 work image" @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" @@ -141,15 +149,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-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-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-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-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 -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-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-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-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-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 @@ -174,6 +182,8 @@ build-base-72: pull-from-72 docker build -t devilbox/php-fpm:7.2-base -f $(location)/base/Dockerfile-7.2 $(location)/base 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-mods-52: docker build -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods @@ -193,6 +203,8 @@ build-mods-72: docker build -t devilbox/php-fpm:7.2-mods -f $(location)/mods/Dockerfile-7.2 $(location)/mods 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-prod-52: docker build -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod @@ -212,6 +224,8 @@ build-prod-72: docker build -t devilbox/php-fpm:7.2-prod -f $(location)/prod/Dockerfile-7.2 $(location)/prod 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-work-52: docker build -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work @@ -231,6 +245,8 @@ build-work-72: docker build -t devilbox/php-fpm:7.2-work -f $(location)/work/Dockerfile-7.2 $(location)/work 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 @@ -255,6 +271,8 @@ rebuild-base-72: pull-from-72 docker build --no-cache -t devilbox/php-fpm:7.2-base -f $(location)/base/Dockerfile-7.2 $(location)/base 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-mods-52: docker build --no-cache -t devilbox/php-fpm:5.2-mods -f $(location)/mods/Dockerfile-5.2 $(location)/mods @@ -274,6 +292,8 @@ rebuild-mods-72: docker build --no-cache -t devilbox/php-fpm:7.2-mods -f $(location)/mods/Dockerfile-7.2 $(location)/mods 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-prod-52: docker build --no-cache -t devilbox/php-fpm:5.2-prod -f $(location)/prod/Dockerfile-5.2 $(location)/prod @@ -293,6 +313,8 @@ rebuild-prod-72: docker build --no-cache -t devilbox/php-fpm:7.2-prod -f $(location)/prod/Dockerfile-7.2 $(location)/prod 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-work-52: docker build --no-cache -t devilbox/php-fpm:5.2-work -f $(location)/work/Dockerfile-5.2 $(location)/work @@ -312,6 +334,8 @@ rebuild-work-72: docker build --no-cache -t devilbox/php-fpm:7.2-work -f $(location)/work/Dockerfile-7.2 $(location)/work 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 @@ -336,6 +360,8 @@ pull-from-72: docker pull $(shell grep FROM $(location)/base/Dockerfile-7.2 | sed 's/^FROM\s*//g';) 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';) ### @@ -343,10 +369,10 @@ pull-from-73: ### 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-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-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-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-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 ### @@ -370,6 +396,8 @@ test-base-72: ./tests/test.sh 7.2 base test-base-73: ./tests/test.sh 7.3 base +test-base-74: + ./tests/test.sh 7.4 base test-mods-52: ./tests/test.sh 5.2 mods @@ -389,6 +417,8 @@ test-mods-72: ./tests/test.sh 7.2 mods test-mods-73: ./tests/test.sh 7.3 mods +test-mods-74: + ./tests/test.sh 7.4 mods test-prod-52: ./tests/test.sh 5.2 prod @@ -408,6 +438,8 @@ test-prod-72: ./tests/test.sh 7.2 prod test-prod-73: ./tests/test.sh 7.3 prod +test-prod-74: + ./tests/test.sh 7.4 prod test-work-52: ./tests/test.sh 5.2 work @@ -427,3 +459,5 @@ test-work-72: ./tests/test.sh 7.2 work test-work-73: ./tests/test.sh 7.3 work +test-work-74: + ./tests/test.sh 7.4 work diff --git a/README.md b/README.md index fabae9f..4ad7d89 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 @@ -235,9 +235,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:7.4-base + + + + + - mods + mods devilbox/php-fpm:5.2-mods @@ -300,9 +307,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:7.4-mods + + + + + - prod + prod devilbox/php-fpm:5.2-prod @@ -365,9 +379,16 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:7.4-prod + + + + + - work + work devilbox/php-fpm:5.2-work @@ -430,6 +451,13 @@ The following table shows a more complete overview about the offered Docker imag + + devilbox/php-fpm:7.4-work + + + + + @@ -540,6 +568,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 apcu, bcmath, bz2, calendar, Core, ctype, curl, date, dba, dom, enchant, exif, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imagick, imap, interbase, intl, json, ldap, libxml, mbstring, mcrypt, memcached, mongodb, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, 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 + + 7.4 + 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, fileinfo, filter, ftp, gd, gettext, gmp, hash, iconv, igbinary, imap, interbase, intl, json, ldap, libxml, mbstring, memcached, mongodb, mysqli, mysqlnd, openssl, pcntl, pcre, PDO, pdo_dblib, PDO_Firebird, pdo_mysql, pdo_pgsql, pdo_sqlite, pgsql, Phar, posix, pspell, rdkafka, readline, recode, 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 + @@ -558,6 +591,7 @@ docker pull devilbox/php-fpm:7.0-base 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 ``` 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`) @@ -573,6 +607,7 @@ docker pull devilbox/php-fpm:7.0-mods 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 ``` 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`) @@ -588,6 +623,7 @@ docker pull devilbox/php-fpm:7.0-prod 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 ``` Devilbox production image. This Docker image comes with many injectables, port-forwardings, mail-catch-all and user/group rewriting. @@ -603,6 +639,7 @@ docker pull devilbox/php-fpm:7.0-work 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 ``` 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 79889a1..19815d1 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.3 %} FROM php:{{ php_version }}-rc-fpm +{% elif php_version == 7.4 %} +FROM devilbox/php-fpm-7.4 {% else %} FROM php:{{ php_version }}-fpm {% endif %} diff --git a/build/ansible/group_vars/all.yml b/build/ansible/group_vars/all.yml index 9e6d5d8..85cfc71 100644 --- a/build/ansible/group_vars/all.yml +++ b/build/ansible/group_vars/all.yml @@ -18,6 +18,7 @@ php_all_versions: - 7.1 - 7.2 - 7.3 + - 7.4 ### @@ -249,6 +250,8 @@ apt_repositories_available: deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu artful main 7.3: 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 all: deb: deb http://ppa.launchpad.net/git-core/ppa/ubuntu wily main key: A1715D88E1DF1F24 @@ -261,6 +264,8 @@ apt_repositories_available: deb: deb http://deb.nodesource.com/node_8.x stretch main 7.3: deb: deb http://deb.nodesource.com/node_8.x stretch main + 7.4: + 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 -q "https://deb.nodesource.com/gpgkey/nodesource.gpg.key" 2>/dev/null | apt-key add - @@ -269,6 +274,8 @@ apt_repositories_available: deb: deb http://apt.postgresql.org/pub/repos/apt/ stretch-pgdg main 7.3: 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 all: deb: deb http://apt.postgresql.org/pub/repos/apt/ jessie-pgdg main pre: curl -q https://www.postgresql.org/media/keys/ACCC4CF8.asc 2>/dev/null | apt-key add - @@ -501,7 +508,7 @@ software_available: && cd / \ && rm -rf /usr/local/src/mysqldump-secure \ phalcon: - disabled: [5.2, 7.3] + disabled: [5.2, 7.3, 7.4] check: phalcon commands | grep -E '[.0-9]+' 5.3: pre: | @@ -769,7 +776,7 @@ extensions_enabled: # command: [required] Custom command to install and enable a module extensions_available: amqp: - disabled: [7.3] + disabled: [7.3, 7.4] 5.2: run_dep: [librabbitmq1] type: pecl @@ -786,7 +793,7 @@ extensions_available: build_dep: [librabbitmq-dev] run_dep: [librabbitmq4] apcu: - disabled: [5.2] + disabled: [5.2, 7.4] 5.3: type: pecl version: 4.0.11 @@ -812,11 +819,11 @@ extensions_available: all: type: builtin ctype: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin curl: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin build_dep: [libcurl4-openssl-dev] @@ -824,7 +831,7 @@ extensions_available: all: type: builtin dom: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-libxml-dir=/usr @@ -841,7 +848,7 @@ extensions_available: all: type: builtin fileinfo: - already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] 5.2: type: pecl build_dep: [libmagic-dev] @@ -850,7 +857,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] + already_avail: [5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-openssl-dir @@ -901,6 +908,9 @@ extensions_available: 7.3: 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 + 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 all: type: builtin pre: ln -s /usr/lib/x86_64-linux-gnu/libXpm.* /usr/lib/ @@ -917,11 +927,11 @@ extensions_available: pre: ln /usr/include/x86_64-linux-gnu/gmp.h /usr/include/ build_dep: [libgmp-dev] hash: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin iconv: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin igbinary: @@ -931,7 +941,7 @@ extensions_available: all: type: pecl imagick: - disabled: [5.2] + disabled: [5.2, 7.4] 5.3: type: pecl version: 3.3.0 @@ -976,7 +986,7 @@ extensions_available: build_dep: [libicu-dev] run_dep: [libicu57] ioncube: - disabled: [7.3] + disabled: [7.3, 7.4] all: type: custom command: | @@ -990,7 +1000,7 @@ extensions_available: && rm -rf ioncube \ && rm -rf ioncube.tar.gz \ json: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] 7.0: type: builtin build_dep: [bison] @@ -1005,10 +1015,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] + already_avail: [5.2, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin mcrypt: + disabled: [7.4] 7.2: type: pecl version: 1.0.1 @@ -1020,7 +1031,7 @@ extensions_available: run_dep: [libmcrypt4] build_dep: [libmcrypt-dev] memcache: - disabled: [7.3] + disabled: [7.3, 7.4] 7.0: type: git git_url: https://github.com/websupport-sk/pecl-memcache @@ -1057,12 +1068,17 @@ 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 + 7.4: + 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 build_dep: [zlib1g-dev, libmemcached-dev] run_dep: [libmemcachedutil2] mongo: - disabled: [7.0, 7.1, 7.2, 7.3] # Deprecated + disabled: [7.0, 7.1, 7.2, 7.3, 7.4] # Deprecated 5.2: type: pecl command: yes | pecl install mongo-1.5.8 @@ -1082,7 +1098,7 @@ extensions_available: type: pecl build_dep: [libssl-dev, libsasl2-dev] msgpack: - disabled: [7.3] + disabled: [7.3, 7.4] 5.2: type: pecl version: 0.5.7 @@ -1102,7 +1118,7 @@ extensions_available: type: pecl mysql: already_avail: [5.2, 5.3] - disabled: [7.0, 7.1, 7.2, 7.3] # Deprecated in newer versions + disabled: [7.0, 7.1, 7.2, 7.3, 7.4] # Deprecated in newer versions 5.6: type: builtin run_dep: [libmariadbclient18] @@ -1115,7 +1131,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] + already_avail: [5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] oci8: disabled: "{{ php_all_versions }}" # TODO: Oracle library is missing odbc: @@ -1142,7 +1158,7 @@ extensions_available: pdo: # https://github.com/docker-library/php/issues/618 #disabled: [7.0] # TODO: Currently disabled due to bug in built - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.1, 7.2, 7.3, 7.4] all: type: builtin pdo_dblib: @@ -1175,7 +1191,7 @@ extensions_available: build_dep: [libpq-dev] run_dep: [libpq5] pdo_sqlite: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin build_dep: [libsqlite3-dev] @@ -1185,7 +1201,7 @@ extensions_available: build_dep: [libpq-dev] run_dep: [libpq5] phalcon: - disabled: [5.2, 7.3] + disabled: [5.2, 7.3, 7.4] 5.3: type: git git_url: https://github.com/phalcon/cphalcon @@ -1210,14 +1226,14 @@ extensions_available: phar: # https://github.com/docker-library/php/issues/618 disabled: [5.6, 7.0] # TODO: Currently disabled due to bug in built - already_avail: [5.3, 5.4, 5.5, 7.1, 7.2, 7.3] + already_avail: [5.3, 5.4, 5.5, 7.1, 7.2, 7.3, 7.4] 5.2: type: pecl all: type: builtin build_dep: [libssl-dev] posix: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin pspell: @@ -1227,7 +1243,7 @@ extensions_available: run_dep: [libaspell15] readline: disabled: [5.3] - already_avail: [5.2, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin build_dep: [libedit-dev, libreadline-dev] @@ -1238,6 +1254,7 @@ extensions_available: build_dep: [librecode-dev] run_dep: [librecode0] redis: + disabled: [7.4] 5.2: type: pecl version: 2.2.7 @@ -1250,7 +1267,7 @@ extensions_available: build_dep: [librdkafka-dev] run_dep: [librdkafka1] session: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-mm @@ -1259,7 +1276,7 @@ extensions_available: all: type: builtin simplexml: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-libxml-dir=/usr @@ -1281,7 +1298,7 @@ extensions_available: type: builtin sodium: disabled: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1] - already_avail: [7.2, 7.3] + already_avail: [7.2, 7.3, 7.4] all: type: builtin build_dep: [libsodium-dev] @@ -1347,6 +1364,46 @@ extensions_available: && make install \ run_dep: [libnghttp2-14, libhiredis0.13] build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, cmake] + 7.4: + type: git + git_url: https://github.com/swoole/swoole-src + git_ref: master + command: | + git checkout $(git describe --abbrev=0 --tags) \ + && git submodule update --init --recursive \ + && cd thirdparty/hiredis \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + && cd ../nghttp2 \ + && cmake . \ + && make install \ + && ldconfig \ + && cd ../.. \ + && phpize \ + && ./configure \ + --enable-async-redis \ + --enable-openssl \ + --enable-thread \ + --enable-swoole \ + --enable-swoole-static \ + --with-swoole \ + --with-openssl-dir=/usr \ + --enable-mysqlnd \ + --enable-coroutine \ + --enable-picohttpparser \ + #`--enable-timewheel` \ + #`--enable-hugepage` \ + #`--enable-asan` \ + #`--with-phpx-dir=` \ + #`--with-jemalloc-dir=/usr/include/jemalloc` \ + #`--enable-coroutine-postgresql` \ + #`--enable-http2` \ + #`--enable-sockets` \ + #`--with-libpq-dir=/usr/include/postgresql/libpq/` \ + && make -j$(getconf _NPROCESSORS_ONLN) \ + && make install \ + run_dep: [libnghttp2-14, libhiredis0.13] + build_dep: [libnghttp2-dev, libssl-dev, libhiredis-dev, cmake] all: type: pecl build_dep: [libnghttp2-dev, libssl-dev] @@ -1378,7 +1435,7 @@ extensions_available: build_dep: [libtidy-dev] run_dep: [libtidy5] tokenizer: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin uploadprogress: @@ -1398,6 +1455,10 @@ extensions_available: type: git git_url: https://github.com/php/pecl-php-uploadprogress configure: --enable-uploadprogress + 7.4: + type: git + git_url: https://github.com/php/pecl-php-uploadprogress + configure: --enable-uploadprogress all: type: pecl wddx: @@ -1406,7 +1467,7 @@ extensions_available: configure: --with-libxml-dir=/usr build_dep: [libxml2-dev] xdebug: - disabled: [7.3] + disabled: [7.3, 7.4] 5.2: type: pecl version: 2.2.7 @@ -1425,13 +1486,13 @@ extensions_available: all: type: pecl xml: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-libxml-dir=/usr build_dep: [libxml2-dev] xmlreader: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-libxml-dir=/usr @@ -1442,7 +1503,7 @@ extensions_available: configure: --with-libxml-dir=/usr --with-iconv-dir=/usr build_dep: [libxml2-dev] xmlwriter: - already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3] + already_avail: [5.2, 5.3, 5.4, 5.5, 5.6, 7.0, 7.1, 7.2, 7.3, 7.4] all: type: builtin configure: --with-libxml-dir=/usr diff --git a/build/ansible/inventory b/build/ansible/inventory index 5fe719c..a3360ff 100644 --- a/build/ansible/inventory +++ b/build/ansible/inventory @@ -8,3 +8,4 @@ php-7.0 php_version=7.0 ansible_connection=local 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 diff --git a/build/gen-readme.sh b/build/gen-readme.sh index 5042d23..1a97488 100755 --- a/build/gen-readme.sh +++ b/build/gen-readme.sh @@ -23,6 +23,7 @@ print_usage() { echo " gen-readme.sh 7.1" echo " gen-readme.sh 7.2" echo " gen-readme.sh 7.3" + echo " gen-readme.sh 7.4" } @@ -73,6 +74,7 @@ if [ "${#}" -eq "0" ]; then update_readme "7.1" update_readme "7.2" update_readme "7.3" + update_readme "7.4" elif [ "${#}" -gt "1" ]; then # Specifying more than 1 argument is wrong echo "Error, invalid number of arguments." @@ -87,7 +89,8 @@ else && [ "${1}" != "7.0" ] \ && [ "${1}" != "7.1" ] \ && [ "${1}" != "7.2" ] \ - && [ "${1}" != "7.3" ]; then + && [ "${1}" != "7.3" ] \ + && [ "${1}" != "7.4" ]; then # Argument does not match any of the PHP versions echo "Error, invalid argument." print_usage