# vi: ft=dockerfile # Auto-generated via Ansible: edit ./ansible/DOCKERFILES/Dockerfile-mods.j2 instead. FROM devilbox/php-fpm:7.4-base as builder ### ### Install ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ alien \ firebird-dev \ freetds-dev \ ghostscript \ libaio-dev \ libbz2-dev \ libc-ares-dev \ libc-client-dev \ libcurl4-openssl-dev \ libevent-dev \ libfbclient2 \ libffi-dev \ libfreetype6-dev \ libgmp-dev \ libib-util \ libicu-dev \ libjpeg-dev \ libkrb5-dev \ libldap2-dev \ liblz4-dev \ liblzf-dev \ libmagickwand-dev \ libmariadb-dev \ libmcrypt-dev \ libmemcached-dev \ libnghttp2-dev \ libpcre3-dev \ libpng-dev \ libpq-dev \ libpspell-dev \ librabbitmq-dev \ librdkafka-dev \ libsasl2-dev \ libsnmp-dev \ libssh2-1-dev \ libssl-dev \ libtidy-dev \ libvips-dev \ libvips42 \ libvpx-dev \ libwebp-dev \ libxml2-dev \ libxpm-dev \ libxslt-dev \ libyaml-dev \ libzip-dev \ libzstd-dev \ re2c \ snmp \ unixodbc-dev \ uuid-dev \ zlib1g-dev \ # Build tools autoconf \ bison \ bisonc++ \ ca-certificates \ curl \ dpkg-dev \ file \ flex \ g++ \ gcc \ git \ lemon \ libc-client-dev \ libc-dev \ libcurl4-openssl-dev \ libssl-dev \ make \ patch \ pkg-config \ re2c \ xz-utils \ && rm -rf /var/lib/apt/lists/* # Fix timezone (only required for testing to stop php -v and php-fpm -v from complaining to stderr) RUN set -eux \ && echo "date.timezone=UTC" > /usr/local/etc/php/php.ini ### ### Install and enable PHP modules ### # Enable ffi if it exists RUN set -eux \ && 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 # -------------------- Installing PHP Extension: amqp -------------------- RUN set -eux \ # Installation: Generic # Type: PECL extension # Custom: Pecl command && echo "/usr" | pecl install amqp \ # Enabling && docker-php-ext-enable amqp \ && true # -------------------- Installing PHP Extension: apcu -------------------- RUN set -eux \ # Installation: Generic # Type: PECL extension # Default: Pecl command && pecl install apcu \ # Enabling && docker-php-ext-enable apcu \ && true # -------------------- Installing PHP Extension: bcmath -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath \ && true # -------------------- Installing PHP Extension: blackfire -------------------- RUN set -eux \ # Installation: Generic # Type: Custom extension && version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") \ && curl -A "Docker" -o /tmp/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/linux/amd64/$version \ && mkdir -p /tmp/blackfire \ && tar zxpf /tmp/blackfire-probe.tar.gz -C /tmp/blackfire \ && mv /tmp/blackfire/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so \ && rm -rf /tmp/blackfire /tmp/blackfire-probe.tar.gz \ \ && true # -------------------- Installing PHP Extension: bz2 -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bz2 \ && true # -------------------- Installing PHP Extension: calendar -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) calendar \ && true # -------------------- Installing PHP Extension: dba -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) dba \ && true # -------------------- Installing PHP Extension: exif -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) exif \ && true # -------------------- Installing PHP Extension: ffi -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) ffi \ && true # -------------------- Installing PHP Extension: gd -------------------- RUN set -eux \ # Generic pre-command && ln -s /usr/lib/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/libXpm.* /usr/lib/ \ # Installation: Version specific # Type: Built-in extension # Custom: configure command && docker-php-ext-configure gd --enable-gd --with-webp --with-jpeg --with-xpm --with-freetype \ # Installation && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gd \ && true # -------------------- Installing PHP Extension: gettext -------------------- RUN set -eux \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gettext \ && true # -------------------- Installing PHP Extension: gmp -------------------- RUN set -eux \ # Generic pre-command && ln /usr/include/$(dpkg-architecture --query DEB_BUILD_GNU_TYPE)/gmp.h /usr/include/ \ # Installation: Generic # Type: Built-in extension && docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) gmp \ && true # -------------------- Installing PHP Extension: igbinary -------------------- RUN set -eux \ # Installation: Generic # Type: PECL extension # Default: Pecl command && pecl install igbinary \ # Enabling && docker-php-ext-enable igbinary \ && true # -------------------- Installing PHP Extension: imagick -------------------- RUN set -eux \ # Installation: Generic # Type: PECL extension # Default: Pecl command && pecl install imagick \ # Enabling && docker-php-ext-enable imagick \ # Generic post-command && sed -i'' 's|.*"thread".*| |g' /etc/ImageMagick-6/policy.xml \ && sed -i'' 's|.*/dev/null || true) \ && (find /usr/local/lib -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) \ && (find /usr/local/sbin -type f -print0 | xargs -n1 -0 -P$(getconf _NPROCESSORS_ONLN) strip --strip-all -p 2>/dev/null || true) # Auto-generated via Ansible: edit ./ansible/DOCKERFILES/Dockerfile-mods.j2 instead. FROM devilbox/php-fpm:7.4-base as final MAINTAINER "cytopia" ### ### Labels ### # https://github.com/opencontainers/image-spec/blob/master/annotations.md #LABEL "org.opencontainers.image.created"="" #LABEL "org.opencontainers.image.version"="" #LABEL "org.opencontainers.image.revision"="" LABEL "maintainer"="cytopia " LABEL "org.opencontainers.image.authors"="cytopia " LABEL "org.opencontainers.image.url"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.documentation"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.source"="https://github.com/devilbox/docker-php-fpm" LABEL "org.opencontainers.image.vendor"="devilbox" LABEL "org.opencontainers.image.licenses"="MIT" LABEL "org.opencontainers.image.ref.name"="7.4-mods" LABEL "org.opencontainers.image.title"="PHP-FPM 7.4-mods" LABEL "org.opencontainers.image.description"="PHP-FPM 7.4-mods" ### ### Install runtime libraries ### RUN set -eux \ && DEBIAN_FRONTEND=noninteractive apt-get update \ && DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends --no-install-suggests \ ghostscript \ libaio1 \ libaspell15 \ libc-ares2 \ libc-client2007e \ libevent-2.1-7 \ libfbclient2 \ libffi7 \ libfreetype6 \ libicu67 \ libjpeg62-turbo \ liblz4-1 \ liblzf1 \ libmagickwand-6.q16-6 \ libmariadbd19 \ libmcrypt4 \ libmemcachedutil2 \ libnghttp2-14 \ libpng16-16 \ libpq5 \ librabbitmq4 \ librdkafka1 \ libssh2-1 \ libsybdb5 \ libtidy5deb1 \ libvips42 \ libvpx6 \ libwebp6 \ libxpm4 \ libxslt1.1 \ libyaml-0-2 \ libzip4 \ libzstd1 \ snmp \ unixodbc \ uuid \ ca-certificates \ && rm -rf /var/lib/apt/lists/* \ \ && update-ca-certificates ### ### Copy artifacts from builder ### ARG EXT_DIR COPY --from=builder ${EXT_DIR}/ ${EXT_DIR}/ COPY --from=builder /usr/local/etc/php/conf.d/ /usr/local/etc/php/conf.d/ COPY --from=builder /usr/local/bin/ /usr/local/bin/ COPY --from=builder /usr/local/lib/ /usr/local/lib/ COPY --from=builder /usr/lib/oracle/ /usr/lib/oracle/ ### ### Post Install executions ### RUN set -eux \ # ---------- imagick ---------- && sed -i'' 's|.*"thread".*| |g' /etc/ImageMagick-6/policy.xml \ && sed -i'' 's|.* /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 '^amqp$' \ && php-fpm -m | grep -oiE '^amqp$' \ && php -m | grep -oiE '^apcu$' \ && php-fpm -m | grep -oiE '^apcu$' \ && 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 '^date$' \ && php-fpm -m | grep -oiE '^date$' \ && php -m | grep -oiE '^dba$' \ && php-fpm -m | grep -oiE '^dba$' \ && php -m | grep -oiE '^libxml$' \ && php-fpm -m | grep -oiE '^libxml$' \ && php -m | grep -oiE '^dom$' \ && php-fpm -m | grep -oiE '^dom$' \ && php -m | grep -oiE '^mbstring$' \ && php-fpm -m | grep -oiE '^mbstring$' \ && 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 '^igbinary$' \ && php-fpm -m | grep -oiE '^igbinary$' \ && php -m | grep -oiE '^imagick$' \ && php-fpm -m | grep -oiE '^imagick$' \ && php -m | grep -oiE '^imap$' \ && php-fpm -m | grep -oiE '^imap$' \ && 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 '^lz4$' \ && php-fpm -m | grep -oiE '^lz4$' \ && php -m | grep -oiE '^lzf$' \ && php-fpm -m | grep -oiE '^lzf$' \ && php -m | grep -oiE '^mcrypt$' \ && php-fpm -m | grep -oiE '^mcrypt$' \ && php -m | grep -oiE '^memcache$' \ && php-fpm -m | grep -oiE '^memcache$' \ && php -m | grep -oiE '^msgpack$' \ && php-fpm -m | grep -oiE '^msgpack$' \ && 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 '^pcre$' \ && php-fpm -m | grep -oiE '^pcre$' \ && php -m | grep -oiE '^oauth$' \ && php-fpm -m | grep -oiE '^oauth$' \ && 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 '^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_oci$' \ && php-fpm -m | grep -oiE '^pdo_oci$' \ && 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 '^pdo_sqlsrv$' \ && php-fpm -m | grep -oiE '^pdo_sqlsrv$' \ && php -m | grep -oiE '^pgsql$' \ && php-fpm -m | grep -oiE '^pgsql$' \ && php -m | grep -oiE '^psr$' \ && php-fpm -m | grep -oiE '^psr$' \ && php -m | grep -oiE '^zstd$' \ && php-fpm -m | grep -oiE '^zstd$' \ && php -m | grep -oiE '^redis$' \ && php-fpm -m | grep -oiE '^redis$' \ && php -m | grep -oiE '^sqlite3$' \ && php-fpm -m | grep -oiE '^sqlite3$' \ && php -m | grep -oiE '^sqlsrv$' \ && php-fpm -m | grep -oiE '^sqlsrv$' \ && php -m | grep -oiE '^phalcon$' \ && php-fpm -m | grep -oiE '^phalcon$' \ && 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 '^rdkafka$' \ && php-fpm -m | grep -oiE '^rdkafka$' \ && php -m | grep -oiE '^readline$' \ && 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 '^solr$' \ && php-fpm -m | grep -oiE '^solr$' \ && php -m | grep -oiE '^spl$' \ && php-fpm -m | grep -oiE '^spl$' \ && php -m | grep -oiE '^ssh2$' \ && php-fpm -m | grep -oiE '^ssh2$' \ && php -m | grep -oiE '^xml$' \ && php-fpm -m | grep -oiE '^xml$' \ && php -m | grep -oiE '^zip$' \ && php-fpm -m | grep -oiE '^zip$' \ && 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 '^uuid$' \ && php-fpm -m | grep -oiE '^uuid$' \ && php -m | grep -oiE '^vips$' \ && php-fpm -m | grep -oiE '^vips$' \ && php -m | grep -oiE '^xdebug$' \ && php-fpm -m | grep -oiE '^xdebug$' \ && php -m | grep -oiE '^xlswriter$' \ && php-fpm -m | grep -oiE '^xlswriter$' \ && 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 '^yaml$' \ && php-fpm -m | grep -oiE '^yaml$' \ && php -m | grep -oiE '^zlib$' \ && php-fpm -m | grep -oiE '^zlib$' \ && true # Deactive PSR and Phalcon: # https://github.com/devilbox/docker-php-fpm/issues/201 RUN set -eux \ && rm -f /usr/local/etc/php/conf.d/docker-php-ext-phalcon.ini || true \ && rm -f /usr/local/etc/php/conf.d/docker-php-ext-psr.ini || true \ ### ### Ports ### EXPOSE 9000 ### ### Entrypoint ### CMD ["/usr/local/sbin/php-fpm"] ENTRYPOINT ["/docker-entrypoint.sh"]