From a4fe3cdda004bdc2e4aff6fb5f6228518a8d8d49 Mon Sep 17 00:00:00 2001 From: Mohammad Hossein Ebadollahi Date: Thu, 29 Oct 2020 13:19:09 +0330 Subject: [PATCH 01/26] Remove prestissimo to be compatible with Composer 2.0 --- Dockerfile.slim.apache | 10 +--------- Dockerfile.slim.cli | 10 +--------- Dockerfile.slim.fpm | 10 +--------- utils/Dockerfile.slim.blueprint | 10 +--------- 4 files changed, 4 insertions(+), 36 deletions(-) diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index 597488d6..fbff188d 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -129,16 +129,8 @@ ENV PHP_EXTENSION_CALENDAR=1 \ PHP_EXTENSION_XSL=1 \ PHP_EXTENSION_ZIP=1 -# |-------------------------------------------------------------------------- -# | prestissimo -# |-------------------------------------------------------------------------- -# | -# | Installs Prestissimo to improve Composer download performance. -# | - USER docker -RUN composer global require hirak/prestissimo && \ - composer global require bamarni/symfony-console-autocomplete && \ +RUN composer global require bamarni/symfony-console-autocomplete && \ rm -rf ~/.composer/cache USER root diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index 40da3e38..dce5e359 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -129,16 +129,8 @@ ENV PHP_EXTENSION_CALENDAR=1 \ PHP_EXTENSION_XSL=1 \ PHP_EXTENSION_ZIP=1 -# |-------------------------------------------------------------------------- -# | prestissimo -# |-------------------------------------------------------------------------- -# | -# | Installs Prestissimo to improve Composer download performance. -# | - USER docker -RUN composer global require hirak/prestissimo && \ - composer global require bamarni/symfony-console-autocomplete && \ +RUN composer global require bamarni/symfony-console-autocomplete && \ rm -rf ~/.composer/cache USER root diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index 8354060b..29451530 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -129,16 +129,8 @@ ENV PHP_EXTENSION_CALENDAR=1 \ PHP_EXTENSION_XSL=1 \ PHP_EXTENSION_ZIP=1 -# |-------------------------------------------------------------------------- -# | prestissimo -# |-------------------------------------------------------------------------- -# | -# | Installs Prestissimo to improve Composer download performance. -# | - USER docker -RUN composer global require hirak/prestissimo && \ - composer global require bamarni/symfony-console-autocomplete && \ +RUN composer global require bamarni/symfony-console-autocomplete && \ rm -rf ~/.composer/cache USER root diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index 3d43ca25..81380c22 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -131,16 +131,8 @@ ENV PHP_EXTENSION_CALENDAR=1 \ PHP_EXTENSION_XSL=1 \ PHP_EXTENSION_ZIP=1 -# |-------------------------------------------------------------------------- -# | prestissimo -# |-------------------------------------------------------------------------- -# | -# | Installs Prestissimo to improve Composer download performance. -# | - USER docker -RUN composer global require hirak/prestissimo && \ - composer global require bamarni/symfony-console-autocomplete && \ +RUN composer global require bamarni/symfony-console-autocomplete && \ rm -rf ~/.composer/cache USER root From a04ae19905d07bb304a6e97ebe44b7a4dceb7bb8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 27 Nov 2020 13:38:12 +0100 Subject: [PATCH 02/26] Adding PHP 8, migrating to Composer 2, deprecating Node8 and adding Node14 --- .travis.yml | 8 +- CHANGELOG.md | 16 ++ ...e.apache.node8 => Dockerfile.apache.node14 | 2 +- Dockerfile.cli.node8 => Dockerfile.cli.node14 | 2 +- Dockerfile.fpm.node8 => Dockerfile.fpm.node14 | 2 +- Dockerfile.slim.apache | 4 +- Dockerfile.slim.cli | 4 +- Dockerfile.slim.fpm | 4 +- README.md | 197 +++++++++--------- build-and-test.sh | 8 +- extensions/8.0/amqp | 1 + extensions/8.0/apcu | 1 + extensions/8.0/ast | 1 + extensions/8.0/bcmath | 1 + extensions/8.0/bz2 | 1 + extensions/8.0/dba | 1 + extensions/8.0/disable_all.sh | 1 + extensions/8.0/docker-install.sh | 1 + extensions/8.0/ds | 1 + extensions/8.0/enchant | 1 + extensions/8.0/gd | 1 + extensions/8.0/gettext | 1 + extensions/8.0/gmp | 1 + extensions/8.0/igbinary | 1 + extensions/8.0/imagick | 1 + extensions/8.0/imap | 1 + extensions/8.0/install_all.sh | 1 + extensions/8.0/intl | 1 + extensions/8.0/ldap | 1 + extensions/8.0/mailparse | 1 + extensions/8.0/memcached | 1 + extensions/8.0/msgpack | 1 + extensions/8.0/mysqli | 1 + extensions/8.0/pdo_dblib | 1 + extensions/8.0/pdo_mysql | 1 + extensions/8.0/pdo_pgsql | 1 + extensions/8.0/pdo_sqlite | 1 + extensions/8.0/pgsql | 1 + extensions/8.0/pspell | 1 + extensions/8.0/redis | 1 + extensions/8.0/snmp | 1 + extensions/8.0/soap | 1 + extensions/8.0/sqlite3 | 1 + extensions/8.0/tidy | 1 + extensions/8.0/uuid | 1 + extensions/8.0/xdebug | 1 + extensions/8.0/yaml | 1 + extensions/core/swoole/install.sh | 0 orbit.yml | 6 +- utils/Dockerfile.slim.blueprint | 4 +- utils/README.blueprint.md | 101 ++++----- utils/docker-entrypoint-as-root.sh | 8 +- utils/generate_conf.php | 4 +- utils/setup_extensions.php | 6 + 54 files changed, 240 insertions(+), 173 deletions(-) rename Dockerfile.apache.node8 => Dockerfile.apache.node14 (91%) rename Dockerfile.cli.node8 => Dockerfile.cli.node14 (91%) rename Dockerfile.fpm.node8 => Dockerfile.fpm.node14 (91%) create mode 120000 extensions/8.0/amqp create mode 120000 extensions/8.0/apcu create mode 120000 extensions/8.0/ast create mode 120000 extensions/8.0/bcmath create mode 120000 extensions/8.0/bz2 create mode 120000 extensions/8.0/dba create mode 120000 extensions/8.0/disable_all.sh create mode 120000 extensions/8.0/docker-install.sh create mode 120000 extensions/8.0/ds create mode 120000 extensions/8.0/enchant create mode 120000 extensions/8.0/gd create mode 120000 extensions/8.0/gettext create mode 120000 extensions/8.0/gmp create mode 120000 extensions/8.0/igbinary create mode 120000 extensions/8.0/imagick create mode 120000 extensions/8.0/imap create mode 120000 extensions/8.0/install_all.sh create mode 120000 extensions/8.0/intl create mode 120000 extensions/8.0/ldap create mode 120000 extensions/8.0/mailparse create mode 120000 extensions/8.0/memcached create mode 120000 extensions/8.0/msgpack create mode 120000 extensions/8.0/mysqli create mode 120000 extensions/8.0/pdo_dblib create mode 120000 extensions/8.0/pdo_mysql create mode 120000 extensions/8.0/pdo_pgsql create mode 120000 extensions/8.0/pdo_sqlite create mode 120000 extensions/8.0/pgsql create mode 120000 extensions/8.0/pspell create mode 120000 extensions/8.0/redis create mode 120000 extensions/8.0/snmp create mode 120000 extensions/8.0/soap create mode 120000 extensions/8.0/sqlite3 create mode 120000 extensions/8.0/tidy create mode 120000 extensions/8.0/uuid create mode 120000 extensions/8.0/xdebug create mode 120000 extensions/8.0/yaml mode change 100755 => 100644 extensions/core/swoole/install.sh diff --git a/.travis.yml b/.travis.yml index e496a704..d9d39f3d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,6 +10,12 @@ env: - secure: ClsghGGhXXVK3pzy338YXGMz/h3TrfXlpTGrZTqWpNdNT4HDsqR5Hjd1nrYeAuA3Hf0o9cDUYaUdBkZx0GBorC81XNowpbFRMyVzPtniZazB1fDpI29AjTMNC73tPF0ANwo2rrmoIx0ca/vIkJuQk1fn7gfKbdVVlZEsD86buJ3W7f7Y3AA6rWVH1R01iwzoLqLv4UCELLNlHS52JHvPqe8cYuMaFhivm3qUGC/m9R/uG31OW+k9fJ4i/rJGgJlkP1eUI0l1bxKnePR0dccbRCv11k4iXFyoV4yvzxi1aO/S/gOnye8RzaSfXvYuKKN4Ge6pN7VO8nVlt3SfZDMgSVyGiOh2AJEjAoc+Itz48dHH4D8NfvbDi4EphftHxM5qqc1T8WKEkoXoBynJJydTlDdkb4dr3geCwo2ps38YnQ0y/JxXFigRzWRF8V3CiZ5bgRXCQiIWD37TmoFv8JYPWGpD8Xs7DJLiDOUEVvARmaeqptW73RxXUfTnd+KD6G0WBcz4tYVSauXyHlOpKPxV0k/+yG5G2ikSvkkf/2Mafut4+5Gy9TMYUXw6C2i2+eGXTpFDDQsoDbZ4dRqrVzrunaXNm3DbPyiE38BCVXwYmz6EQUDoKKlV7d3+Zr/5Kfw8hbXvflGSTQt87M4WDh0FbLhAm2cGPoP5PDzF8lm+txc= - secure: JssDXVzbu3gScW92+C/ZdSDODXV79PDx4IekkCYH6+OFPNLJSF9n14js6LtMJurKZp7F7VpqUO4gNyQ9y4HVRQJPhB7nzOy2SH77AWcwK2tmTGVB7MBK19E/d8xLBuDQWziVBIOCjW5gHpffBhT0SgBeZ5kxy15hVCZrce65bxlycGd+5DRGSd4zz6u+eGIc+eKWYgTSbfKRmWRC4QQVi87wiR9Efp7ywTEjKutMg9zFXTvPNoeaUbQJQgx2ZeGOY/THB0jXL9jkYgnvDq5sowDaSjd7DTEAWy5PdKh0zCIv8lLrO+mWiVOzGpKwRwVatPHsfzbuvl51ZIp6XvphURRpgu/+1x+Spm/Y+twzXzzeJenIJsJdPFZ4j5g34NsVHc+RnjIhB51g/+VPpW/Rid1+tWYp9v+QtUxMq7p7ZStwE/17Bi9+wVbACvUuHlyenr+hEXr2JCmv0Jj7F0P5+GgLSE3h3yitgUU+nJ6qwdmGzyZ3WQp8KklyumhbfOLIMvJ811Ayp8aV12dcp+hGIl5D7XSHdwZ4PK4wnB3oJiPaBB/HGS6/Tcav+cN8E39f6DjISlPHGXidfxQl3XuMOBOi6U6/eInWCRD1hTqzRtJMieboz8OOh9KcUQq8XhoqTbh2zCKRY+wgoOqLzHs9Dbd1cJAu0CvDX6jIuR3FqUA= matrix: + - VARIANT="cli" + PHP_VERSION="8.0" + - VARIANT="apache" + PHP_VERSION="8.0" + - VARIANT="fpm" + PHP_VERSION="8.0" - VARIANT="cli" PHP_VERSION="7.4" - VARIANT="apache" @@ -46,7 +52,7 @@ script: docker login -u $DOCKER_USER -p $DOCKER_PASS docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-slim-${BRANCH_VARIANT} docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT} - docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node8 docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node10 docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node12 + docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node14 fi diff --git a/CHANGELOG.md b/CHANGELOG.md index aa6c85a7..4abe8ed0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ +# v4 + +## New features + +- Support for PHP 8.0 +- Support for Node 14 + +## Breaking changes + +- Base image is Ubuntu 20.04 +- Dropped Node 8 images + +# v3 + +See MIGRATING.md + # v2 ## New features diff --git a/Dockerfile.apache.node8 b/Dockerfile.apache.node14 similarity index 91% rename from Dockerfile.apache.node8 rename to Dockerfile.apache.node14 index e4cdf049..0fcd0b59 100644 --- a/Dockerfile.apache.node8 +++ b/Dockerfile.apache.node14 @@ -8,7 +8,7 @@ USER root RUN apt-get update && \ apt-get install -y --no-install-recommends gnupg && \ - curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ + curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ apt-get update && \ apt-get install -y --no-install-recommends nodejs && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ diff --git a/Dockerfile.cli.node8 b/Dockerfile.cli.node14 similarity index 91% rename from Dockerfile.cli.node8 rename to Dockerfile.cli.node14 index fde41468..0cb4ae72 100644 --- a/Dockerfile.cli.node8 +++ b/Dockerfile.cli.node14 @@ -8,7 +8,7 @@ USER root RUN apt-get update && \ apt-get install -y --no-install-recommends gnupg && \ - curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ + curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ apt-get update && \ apt-get install -y --no-install-recommends nodejs && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ diff --git a/Dockerfile.fpm.node8 b/Dockerfile.fpm.node14 similarity index 91% rename from Dockerfile.fpm.node8 rename to Dockerfile.fpm.node14 index d150ff4e..0555d128 100644 --- a/Dockerfile.fpm.node8 +++ b/Dockerfile.fpm.node14 @@ -8,7 +8,7 @@ USER root RUN apt-get update && \ apt-get install -y --no-install-recommends gnupg && \ - curl -sL https://deb.nodesource.com/setup_8.x | bash - && \ + curl -sL https://deb.nodesource.com/setup_14.x | bash - && \ apt-get update && \ apt-get install -y --no-install-recommends nodejs && \ curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \ diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index 2c4300b1..b25fff07 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -36,12 +36,12 @@ RUN apt-get update \ curl \ php${PHP_VERSION}-cli \ php${PHP_VERSION}-curl \ - php${PHP_VERSION}-json \ php${PHP_VERSION}-mbstring \ php${PHP_VERSION}-opcache \ php${PHP_VERSION}-readline \ php${PHP_VERSION}-xml \ php${PHP_VERSION}-zip \ + && if [ "${PHP_VERSION}" = "7.1" ] || [ "${PHP_VERSION}" = "7.2" ] || [ "${PHP_VERSION}" = "7.3" ] || [ "${PHP_VERSION}" = "7.4" ]; then apt-get install -y --no-install-recommends php${PHP_VERSION}-json; fi \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* @@ -86,7 +86,7 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --1 --install-dir=/usr/local/bin --filename=real_composer &&\ +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ chmod +x /usr/local/bin/real_composer # TODO: utils.php in /usr/local/bin... bof! diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index 85a4c98e..50843b2a 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -36,12 +36,12 @@ RUN apt-get update \ curl \ php${PHP_VERSION}-cli \ php${PHP_VERSION}-curl \ - php${PHP_VERSION}-json \ php${PHP_VERSION}-mbstring \ php${PHP_VERSION}-opcache \ php${PHP_VERSION}-readline \ php${PHP_VERSION}-xml \ php${PHP_VERSION}-zip \ + && if [ "${PHP_VERSION}" = "7.1" ] || [ "${PHP_VERSION}" = "7.2" ] || [ "${PHP_VERSION}" = "7.3" ] || [ "${PHP_VERSION}" = "7.4" ]; then apt-get install -y --no-install-recommends php${PHP_VERSION}-json; fi \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* @@ -86,7 +86,7 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --1 --install-dir=/usr/local/bin --filename=real_composer &&\ +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ chmod +x /usr/local/bin/real_composer # TODO: utils.php in /usr/local/bin... bof! diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index d766dcec..87a61987 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -36,12 +36,12 @@ RUN apt-get update \ curl \ php${PHP_VERSION}-cli \ php${PHP_VERSION}-curl \ - php${PHP_VERSION}-json \ php${PHP_VERSION}-mbstring \ php${PHP_VERSION}-opcache \ php${PHP_VERSION}-readline \ php${PHP_VERSION}-xml \ php${PHP_VERSION}-zip \ + && if [ "${PHP_VERSION}" = "7.1" ] || [ "${PHP_VERSION}" = "7.2" ] || [ "${PHP_VERSION}" = "7.3" ] || [ "${PHP_VERSION}" = "7.4" ]; then apt-get install -y --no-install-recommends php${PHP_VERSION}-json; fi \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* @@ -86,7 +86,7 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --1 --install-dir=/usr/local/bin --filename=real_composer &&\ +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ chmod +x /usr/local/bin/real_composer # TODO: utils.php in /usr/local/bin... bof! diff --git a/README.md b/README.md index 615bdc6c..ef807855 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/thecodingmachine/docker-images-php.svg?branch=v3)](https://travis-ci.org/thecodingmachine/docker-images-php) +[![Build Status](https://travis-ci.org/thecodingmachine/docker-images-php.svg?branch=v4)](https://travis-ci.org/thecodingmachine/docker-images-php) # General purpose PHP images for Docker @@ -20,74 +20,74 @@ This repository contains a set of developer-friendly, general purpose PHP images | Name | PHP version | type |variant | NodeJS version | Size |-------------------------------------------------------------------------|------------------------------|------|--------|-----------------|------ -| [thecodingmachine/php:7.4-v3-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache) | `7.4.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-apache) -| [thecodingmachine/php:7.4-v3-apache-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node8) | `7.4.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-apache-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-apache-node8) -| [thecodingmachine/php:7.4-v3-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node10) | `7.4.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-apache-node10) -| [thecodingmachine/php:7.4-v3-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node12) | `7.4.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-apache-node12) -| [thecodingmachine/php:7.4-v3-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm) | `7.4.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-fpm) -| [thecodingmachine/php:7.4-v3-fpm-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node8) | `7.4.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-fpm-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-fpm-node8) -| [thecodingmachine/php:7.4-v3-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node10) | `7.4.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-fpm-node10) -| [thecodingmachine/php:7.4-v3-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node12) | `7.4.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-fpm-node12) -| [thecodingmachine/php:7.4-v3-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli) | `7.4.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-cli) -| [thecodingmachine/php:7.4-v3-cli-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node8) | `7.4.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-cli-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-cli-node8) -| [thecodingmachine/php:7.4-v3-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node10) | `7.4.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-cli-node10) -| [thecodingmachine/php:7.4-v3-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node12) | `7.4.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-cli-node12) -| [thecodingmachine/php:7.4-v3-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.apache) | `7.4.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-slim-apache) -| [thecodingmachine/php:7.4-v3-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.fpm) | `7.4.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-slim-fpm) -| [thecodingmachine/php:7.4-v3-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.cli) | `7.4.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v3-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v3-slim-cli) -| [thecodingmachine/php:7.3-v3-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache) | `7.3.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-apache) -| [thecodingmachine/php:7.3-v3-apache-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node8) | `7.3.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-apache-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-apache-node8) -| [thecodingmachine/php:7.3-v3-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node10) | `7.3.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-apache-node10) -| [thecodingmachine/php:7.3-v3-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node12) | `7.3.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-apache-node12) -| [thecodingmachine/php:7.3-v3-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm) | `7.3.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-fpm) -| [thecodingmachine/php:7.3-v3-fpm-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node8) | `7.3.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-fpm-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-fpm-node8) -| [thecodingmachine/php:7.3-v3-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node10) | `7.3.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-fpm-node10) -| [thecodingmachine/php:7.3-v3-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node12) | `7.3.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-fpm-node12) -| [thecodingmachine/php:7.3-v3-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli) | `7.3.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-cli) -| [thecodingmachine/php:7.3-v3-cli-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node8) | `7.3.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-cli-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-cli-node8) -| [thecodingmachine/php:7.3-v3-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node10) | `7.3.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-cli-node10) -| [thecodingmachine/php:7.3-v3-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node12) | `7.3.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-cli-node12) -| [thecodingmachine/php:7.3-v3-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.apache) | `7.3.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-slim-apache) -| [thecodingmachine/php:7.3-v3-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.fpm) | `7.3.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-slim-fpm) -| [thecodingmachine/php:7.3-v3-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.cli) | `7.3.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v3-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v3-slim-cli) -| [thecodingmachine/php:7.2-v3-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache) | `7.2.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-apache) -| [thecodingmachine/php:7.2-v3-apache-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node8) | `7.2.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-apache-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-apache-node8) -| [thecodingmachine/php:7.2-v3-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node10) | `7.2.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-apache-node10) -| [thecodingmachine/php:7.2-v3-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node12) | `7.2.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-apache-node12) -| [thecodingmachine/php:7.2-v3-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm) | `7.2.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-fpm) -| [thecodingmachine/php:7.2-v3-fpm-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node8) | `7.2.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-fpm-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-fpm-node8) -| [thecodingmachine/php:7.2-v3-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node10) | `7.2.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-fpm-node10) -| [thecodingmachine/php:7.2-v3-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node12) | `7.2.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-fpm-node12) -| [thecodingmachine/php:7.2-v3-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli) | `7.2.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-cli) -| [thecodingmachine/php:7.2-v3-cli-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node8) | `7.2.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-cli-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-cli-node8) -| [thecodingmachine/php:7.2-v3-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node10) | `7.2.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-cli-node10) -| [thecodingmachine/php:7.2-v3-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node12) | `7.2.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-cli-node12) -| [thecodingmachine/php:7.2-v3-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.apache) | `7.2.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-slim-apache) -| [thecodingmachine/php:7.2-v3-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.fpm) | `7.2.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-slim-fpm) -| [thecodingmachine/php:7.2-v3-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.cli) | `7.2.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v3-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v3-slim-cli) -| [thecodingmachine/php:7.1-v3-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache) | `7.1.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-apache) -| [thecodingmachine/php:7.1-v3-apache-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node8) | `7.1.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-apache-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-apache-node8) -| [thecodingmachine/php:7.1-v3-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node10) | `7.1.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-apache-node10) -| [thecodingmachine/php:7.1-v3-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node12) | `7.1.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-apache-node12) -| [thecodingmachine/php:7.1-v3-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm) | `7.1.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-fpm) -| [thecodingmachine/php:7.1-v3-fpm-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node8) | `7.1.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-fpm-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-fpm-node8) -| [thecodingmachine/php:7.1-v3-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node10) | `7.1.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-fpm-node10) -| [thecodingmachine/php:7.1-v3-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node12) | `7.1.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-fpm-node12) -| [thecodingmachine/php:7.1-v3-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli) | `7.1.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-cli) -| [thecodingmachine/php:7.1-v3-cli-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node8) | `7.1.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-cli-node8.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-cli-node8) -| [thecodingmachine/php:7.1-v3-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node10) | `7.1.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-cli-node10) -| [thecodingmachine/php:7.1-v3-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node12) | `7.1.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-cli-node12) -| [thecodingmachine/php:7.1-v3-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.apache) | `7.1.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-slim-apache) -| [thecodingmachine/php:7.1-v3-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.fpm) | `7.1.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-slim-fpm) -| [thecodingmachine/php:7.1-v3-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.cli) | `7.1.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v3-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v3-slim-cli) - - -Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.1, one for PHP 7.2, -but no tagged image for PHP 7.1.12. This is because we believe you have no valid reason to ask explicitly for 7.1.12. -When 7.1.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. - -Images are automatically updated when a new patch version of PHP is released, so the PHP 7.1 image will always contain -the most up-to-date version of the PHP 7.1.x branch. If you want to automatically update your images on your production +| [thecodingmachine/php:7.4-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.4.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache) +| [thecodingmachine/php:7.4-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.4.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache-node10) +| [thecodingmachine/php:7.4-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.4.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache-node12) +| [thecodingmachine/php:7.4-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `7.4.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache-node14) +| [thecodingmachine/php:7.4-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `7.4.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-fpm) +| [thecodingmachine/php:7.4-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `7.4.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-fpm-node10) +| [thecodingmachine/php:7.4-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `7.4.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-fpm-node12) +| [thecodingmachine/php:7.4-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `7.4.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-fpm-node14) +| [thecodingmachine/php:7.4-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `7.4.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-cli) +| [thecodingmachine/php:7.4-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `7.4.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-cli-node10) +| [thecodingmachine/php:7.4-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `7.4.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-cli-node12) +| [thecodingmachine/php:7.4-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `7.4.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-cli-node14) +| [thecodingmachine/php:7.4-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.4.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-slim-apache) +| [thecodingmachine/php:7.4-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.4.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-slim-fpm) +| [thecodingmachine/php:7.4-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.4.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-slim-cli) +| [thecodingmachine/php:7.3-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.3.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-apache) +| [thecodingmachine/php:7.3-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.3.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-apache-node10) +| [thecodingmachine/php:7.3-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.3.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-apache-node12) +| [thecodingmachine/php:7.3-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `7.3.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-apache-node14) +| [thecodingmachine/php:7.3-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `7.3.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-fpm) +| [thecodingmachine/php:7.3-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `7.3.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-fpm-node10) +| [thecodingmachine/php:7.3-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `7.3.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-fpm-node12) +| [thecodingmachine/php:7.3-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `7.3.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-fpm-node14) +| [thecodingmachine/php:7.3-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `7.3.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-cli) +| [thecodingmachine/php:7.3-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `7.3.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-cli-node10) +| [thecodingmachine/php:7.3-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `7.3.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-cli-node12) +| [thecodingmachine/php:7.3-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `7.3.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-cli-node14) +| [thecodingmachine/php:7.3-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.3.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-slim-apache) +| [thecodingmachine/php:7.3-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.3.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-slim-fpm) +| [thecodingmachine/php:7.3-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.3.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.3-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.3-v4-slim-cli) +| [thecodingmachine/php:7.2-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.2.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-apache) +| [thecodingmachine/php:7.2-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.2.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-apache-node10) +| [thecodingmachine/php:7.2-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.2.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-apache-node12) +| [thecodingmachine/php:7.2-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `7.2.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-apache-node14) +| [thecodingmachine/php:7.2-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `7.2.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-fpm) +| [thecodingmachine/php:7.2-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `7.2.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-fpm-node10) +| [thecodingmachine/php:7.2-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `7.2.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-fpm-node12) +| [thecodingmachine/php:7.2-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `7.2.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-fpm-node14) +| [thecodingmachine/php:7.2-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `7.2.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-cli) +| [thecodingmachine/php:7.2-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `7.2.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-cli-node10) +| [thecodingmachine/php:7.2-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `7.2.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-cli-node12) +| [thecodingmachine/php:7.2-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `7.2.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-cli-node14) +| [thecodingmachine/php:7.2-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.2.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-apache) +| [thecodingmachine/php:7.2-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.2.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-fpm) +| [thecodingmachine/php:7.2-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.2.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-cli) +| [thecodingmachine/php:7.1-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.1.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache) +| [thecodingmachine/php:7.1-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.1.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node10) +| [thecodingmachine/php:7.1-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.1.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node12) +| [thecodingmachine/php:7.1-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `7.1.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node14) +| [thecodingmachine/php:7.1-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `7.1.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm) +| [thecodingmachine/php:7.1-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `7.1.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node10) +| [thecodingmachine/php:7.1-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `7.1.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node12) +| [thecodingmachine/php:7.1-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `7.1.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node14) +| [thecodingmachine/php:7.1-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `7.1.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli) +| [thecodingmachine/php:7.1-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `7.1.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node10) +| [thecodingmachine/php:7.1-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `7.1.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node12) +| [thecodingmachine/php:7.1-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `7.1.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node14) +| [thecodingmachine/php:7.1-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.1.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-apache) +| [thecodingmachine/php:7.1-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.1.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-fpm) +| [thecodingmachine/php:7.1-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.1.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-cli) + + +Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.3, one for PHP 7.4, +but no tagged image for PHP 7.3.12. This is because we believe you have no valid reason to ask explicitly for 7.3.12. +When 7.3.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. + +Images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain +the most up-to-date version of the PHP 7.4.x branch. If you want to automatically update your images on your production environment, you can use tools like [watchtower](https://github.com/containrrr/watchtower) that will monitor new versions of the images and update your environment on the fly. @@ -98,26 +98,26 @@ These images are based on the [official PHP image](https://hub.docker.com/_/php/ Example with CLI: ```bash -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app thecodingmachine/php:7.4-v3-cli php your-script.php +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app thecodingmachine/php:7.4-v4-cli php your-script.php ``` Example with Apache: ```bash -$ docker run -p 80:80 --rm --name my-apache-php-app -v "$PWD":/var/www/html thecodingmachine/php:7.4-v3-apache +$ docker run -p 80:80 --rm --name my-apache-php-app -v "$PWD":/var/www/html thecodingmachine/php:7.4-v4-apache ``` Example with PHP-FPM: ```bash -$ docker run -p 9000:9000 --rm --name my-php-fpm -v "$PWD":/var/www/html thecodingmachine/php:7.4-v3-fpm +$ docker run -p 9000:9000 --rm --name my-php-fpm -v "$PWD":/var/www/html thecodingmachine/php:7.4-v4-fpm ``` Example with Apache + Node 8.x in a Dockerfile: **Dockerfile** ```Dockerfile -FROM thecodingmachine/php:7.4-v3-apache-node8 +FROM thecodingmachine/php:7.4-v4-apache-node14 COPY src/ /var/www/html/ RUN composer install @@ -152,6 +152,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) +- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image @@ -163,7 +164,7 @@ For instance: version: '3' services: my_app: - image: thecodingmachine/php:7.4-v3-apache-node8 + image: thecodingmachine/php:7.4-v4-apache-node14 environment: # Enable the PostgreSQL extension PHP_EXTENSION_PGSQL: 1 @@ -183,7 +184,7 @@ If you are using the slim image, you can automatically compile the extensions us ```Dockerfile ARG PHP_EXTENSIONS="apcu mysqli pdo_mysql redis soap" -FROM thecodingmachine/php:7.4-v3-slim-apache +FROM thecodingmachine/php:7.4-v4-slim-apache # The build will automatically trigger the download and compilation # of the extensions (thanks to a ONBUILD hook in the slim image) ``` @@ -200,7 +201,7 @@ first FROM): # The PHP_EXTENSIONS ARG will apply to the "slim" image ARG PHP_EXTENSIONS="apcu mysqli opcache pdo_mysql zip soap" -FROM thecodingmachine/php:7.2-v3-apache-node10 AS builder +FROM thecodingmachine/php:7.2-v4-apache-node10 AS builder COPY --chown=docker:docker sources/web . RUN composer install &&\ @@ -208,7 +209,7 @@ RUN composer install &&\ yarn build # The slim image will automatically build the extensions from the list provided at the very top of the file. -FROM thecodingmachine/php:7.2-v3-slim-apache +FROM thecodingmachine/php:7.2-v4-slim-apache ENV APP_ENV=prod \ APACHE_DOCUMENT_ROOT=public/ @@ -236,7 +237,7 @@ You can override parameters in `php.ini` using the PHP_INI_XXX environment varia version: '3' services: my_app: - image: thecodingmachine/php:7.4-v3-apache-node8 + image: thecodingmachine/php:7.4-v4-apache-node14 environment: # set the parameter memory_limit=1g PHP_INI_MEMORY_LIMIT: 1g @@ -298,7 +299,7 @@ For instance: version: '3' services: my_app: - image: thecodingmachine/php:7.4-v3-apache-node8 + image: thecodingmachine/php:7.4-v4-apache-node14 environment: # Enable the DAV extension for Apache APACHE_EXTENSION_DAV: 1 @@ -325,23 +326,23 @@ To enable XDebug, you simply have to set the environment variable: PHP_EXTENSION_XDEBUG=1 ``` -If you enable XDebug, the image will do its best to configure the `xdebug.remote_host` to point back to your Docker host. +If you enable XDebug, the image will do its best to configure the `xdebug.client_host` to point back to your Docker host. Behind the scenes, the image will: -- set the parameter `xdebug.remote_enable=1` -- if you are using a Linux or Windows machine, the `xdebug.remote_host` IP will point to your Docker gateway -- if you are using a MaxOS machine, the `xdebug.remote_host` IP will point to [`docker.for.mac.localhost`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) +- set the parameter `xdebug.mode=debug` +- if you are using a Linux machine, the `xdebug.client_host` IP will point to your Docker gateway +- if you are using a Windows or MaxOS machine, the `xdebug.client_host` IP will point to [`host.docker.internal`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) or [`docker.for.mac.localhost`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) ## NodeJS -The *fat* images come with a Node variant. You can use Node 8 or Node 10. If you need a Node 6 variant, [use thecodingmachine/php v1 images](https://github.com/thecodingmachine/docker-images-php/tree/7.2-v1). +The *fat* images come with a Node variant. You can use Node 10, 12 or 14. If you need a Node 8 variant, [use thecodingmachine/php v4 images](https://github.com/thecodingmachine/docker-images-php/tree/v4). If you need a Node 6 variant, [use thecodingmachine/php v1 images](https://github.com/thecodingmachine/docker-images-php/tree/7.2-v1). If you use the *slim* images, you can install a NodeJS version with a simple ARG during the build: ```Dockerfile -ARG NODE_VERSION=10 -FROM thecodingmachine/php:7.4-v3-slim-apache +ARG NODE_VERSION=14 +FROM thecodingmachine/php:7.4-v4-slim-apache # The build will automatically trigger the download of Node 10 # (thanks to a ONBUILD hook in the slim image) ``` @@ -394,7 +395,7 @@ This can be done easily: **Dockerfile** ``` -FROM thecodingmachine/php:7.4-v3-apache +FROM thecodingmachine/php:7.4-v4-apache # ... @@ -438,7 +439,7 @@ a single argument before the "FROM" clause in your Dockerfile: ```Dockerfile ARG INSTALL_CRON=1 -FROM thecodingmachine/php:7.4-v3-slim-apache +FROM thecodingmachine/php:7.4-v4-slim-apache # The build triggers automatically the installation of Cron ``` @@ -491,12 +492,12 @@ If such a file is mounted in the image, it will be executed on container startup ```bash docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp \ - -v $PWD/my-startup-script.sh:/etc/container/startup.sh thecodingmachine/php:7.4-v3-cli php your-script.php + -v $PWD/my-startup-script.sh:/etc/container/startup.sh thecodingmachine/php:7.4-v4-cli php your-script.php ``` ## Using the CLI variant -The CLI images (thecodingmachine/php:7.x-v3-cli) expect a command to be passed in parameter. +The CLI images (thecodingmachine/php:7.x-v4-cli) expect a command to be passed in parameter. You should override the Docker "command". Important! You should not override the Docker "entrypoint". @@ -504,7 +505,7 @@ Important! You should not override the Docker "entrypoint". **Usage in a Dockerfile:** ```Dockerfile -FROM thecodingmachine/php:7.4-v3-cli +FROM thecodingmachine/php:7.4-v4-cli CMD ["php", "myprogram.php", "some_param"] ``` @@ -516,7 +517,7 @@ CMD ["php", "myprogram.php", "some_param"] version: '3' services: my_app: - image: thecodingmachine/php:7.4-v3-cli + image: thecodingmachine/php:7.4-v4-cli command: php myprogram.php some_param ``` @@ -536,7 +537,7 @@ This option is the easiest way to go if you are using the image on a development version: '3' services: my_app: - image: thecodingmachine/php:7.4-v3-apache-node8 + image: thecodingmachine/php:7.4-v4-apache-node14 volumes: - ~/.ssh:/home/docker/.ssh ``` @@ -557,7 +558,7 @@ Now, let's write a Dockerfile. **Dockerfile** ```yml -FROM thecodingmachine/php:7.4-v3-apache +FROM thecodingmachine/php:7.4-v4-apache ARG SSH_PRIVATE_KEY ARG SSH_KNOWN_HOSTS @@ -595,7 +596,7 @@ kind: Pod spec: containers: - name: foobar - image: thecodingmachine/php:7.4-v3-apache + image: thecodingmachine/php:7.4-v4-apache securityContext: allowPrivilegeEscalation: true # never use "false" here. ``` @@ -617,7 +618,7 @@ Your `docker-compose.yml` file will typically look like this: version: '3.3' services: php: - image: thecodingmachine/php:7.4-v3-apache + image: thecodingmachine/php:7.4-v4-apache ports: - "80:80" environment: @@ -643,7 +644,7 @@ If for some reason, the container name is not "blackfire", you can customize the version: '3.3' services: php: - image: thecodingmachine/php:7.4-v3-apache + image: thecodingmachine/php:7.4-v4-apache environment: PHP_EXTENSION_BLACKFIRE: 1 BLACKFIRE_AGENT: myblackfire @@ -678,7 +679,7 @@ This command will generate all the files from the "blueprint" templates. You can then test your changes using the `build-and-test.sh` command: ```bash -PHP_VERSION=7.4 BRANCH=v3 VARIANT=apache ./build-and-test.sh +PHP_VERSION=7.4 BRANCH=v4 VARIANT=apache ./build-and-test.sh ``` ### Adding additional images diff --git a/build-and-test.sh b/build-and-test.sh index 9f6b5d33..ce89a700 100755 --- a/build-and-test.sh +++ b/build-and-test.sh @@ -176,10 +176,10 @@ docker run --rm -e PHP_EXTENSION_MBSTRING=0 thecodingmachine/php:${PHP_VERSION}- [[ "$?" = "1" ]] set -e -# Let's check that the "xdebug.remote_host" contains a value different from "no value" -docker run --rm -e PHP_EXTENSION_XDEBUG=1 thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT} php -i | grep xdebug.remote_host| grep -v "no value" +# Let's check that the "xdebug.client_host" contains a value different from "no value" +docker run --rm -e PHP_EXTENSION_XDEBUG=1 thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT} php -i | grep xdebug.client_host| grep -v "no value" -if [[ "${PHP_VERSION}" != "7.4" ]]; then +if [[ "${PHP_VERSION}" != "7.4" ]] && [[ "${PHP_VERSION}" != "8.0" ]]; then # Tests that blackfire + xdebug will output an error RESULT=`docker run --rm -e PHP_EXTENSION_XDEBUG=1 -e PHP_EXTENSION_BLACKFIRE=1 thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT} php -v 2>&1 | grep 'WARNING: Both Blackfire and Xdebug are enabled. This is not recommended as the PHP engine may not behave as expected. You should strongly consider disabling Xdebug or Blackfire.'` [[ "$RESULT" = "WARNING: Both Blackfire and Xdebug are enabled. This is not recommended as the PHP engine may not behave as expected. You should strongly consider disabling Xdebug or Blackfire." ]] @@ -197,8 +197,8 @@ docker rmi test/composer_with_gd ################################# # Let's build the "node" images ################################# -docker build -t thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT}-node8 --build-arg PHP_VERSION=${PHP_VERSION} --build-arg GLOBAL_VERSION=${BRANCH} -f Dockerfile.${VARIANT}.node8 . docker build -t thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT}-node10 --build-arg PHP_VERSION=${PHP_VERSION} --build-arg GLOBAL_VERSION=${BRANCH} -f Dockerfile.${VARIANT}.node10 . docker build -t thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT}-node12 --build-arg PHP_VERSION=${PHP_VERSION} --build-arg GLOBAL_VERSION=${BRANCH} -f Dockerfile.${VARIANT}.node12 . +docker build -t thecodingmachine/php:${PHP_VERSION}-${BRANCH}-${BRANCH_VARIANT}-node14 --build-arg PHP_VERSION=${PHP_VERSION} --build-arg GLOBAL_VERSION=${BRANCH} -f Dockerfile.${VARIANT}.node14 . echo "Tests passed with success" diff --git a/extensions/8.0/amqp b/extensions/8.0/amqp new file mode 120000 index 00000000..67752699 --- /dev/null +++ b/extensions/8.0/amqp @@ -0,0 +1 @@ +../core/amqp/ \ No newline at end of file diff --git a/extensions/8.0/apcu b/extensions/8.0/apcu new file mode 120000 index 00000000..ddbb93d6 --- /dev/null +++ b/extensions/8.0/apcu @@ -0,0 +1 @@ +../core/apcu \ No newline at end of file diff --git a/extensions/8.0/ast b/extensions/8.0/ast new file mode 120000 index 00000000..5241c003 --- /dev/null +++ b/extensions/8.0/ast @@ -0,0 +1 @@ +../core/ast \ No newline at end of file diff --git a/extensions/8.0/bcmath b/extensions/8.0/bcmath new file mode 120000 index 00000000..36953ef1 --- /dev/null +++ b/extensions/8.0/bcmath @@ -0,0 +1 @@ +../core/bcmath \ No newline at end of file diff --git a/extensions/8.0/bz2 b/extensions/8.0/bz2 new file mode 120000 index 00000000..34eaa01d --- /dev/null +++ b/extensions/8.0/bz2 @@ -0,0 +1 @@ +../core/bz2 \ No newline at end of file diff --git a/extensions/8.0/dba b/extensions/8.0/dba new file mode 120000 index 00000000..f9598d4d --- /dev/null +++ b/extensions/8.0/dba @@ -0,0 +1 @@ +../core/dba \ No newline at end of file diff --git a/extensions/8.0/disable_all.sh b/extensions/8.0/disable_all.sh new file mode 120000 index 00000000..36f58a80 --- /dev/null +++ b/extensions/8.0/disable_all.sh @@ -0,0 +1 @@ +../core/disable_all.sh \ No newline at end of file diff --git a/extensions/8.0/docker-install.sh b/extensions/8.0/docker-install.sh new file mode 120000 index 00000000..245891f8 --- /dev/null +++ b/extensions/8.0/docker-install.sh @@ -0,0 +1 @@ +../core/docker-install.sh \ No newline at end of file diff --git a/extensions/8.0/ds b/extensions/8.0/ds new file mode 120000 index 00000000..edbe1af6 --- /dev/null +++ b/extensions/8.0/ds @@ -0,0 +1 @@ +../core/ds \ No newline at end of file diff --git a/extensions/8.0/enchant b/extensions/8.0/enchant new file mode 120000 index 00000000..aa197129 --- /dev/null +++ b/extensions/8.0/enchant @@ -0,0 +1 @@ +../core/enchant \ No newline at end of file diff --git a/extensions/8.0/gd b/extensions/8.0/gd new file mode 120000 index 00000000..c4cfd1f9 --- /dev/null +++ b/extensions/8.0/gd @@ -0,0 +1 @@ +../core/gd \ No newline at end of file diff --git a/extensions/8.0/gettext b/extensions/8.0/gettext new file mode 120000 index 00000000..0369641a --- /dev/null +++ b/extensions/8.0/gettext @@ -0,0 +1 @@ +../core/gettext \ No newline at end of file diff --git a/extensions/8.0/gmp b/extensions/8.0/gmp new file mode 120000 index 00000000..d3dce5ec --- /dev/null +++ b/extensions/8.0/gmp @@ -0,0 +1 @@ +../core/gmp \ No newline at end of file diff --git a/extensions/8.0/igbinary b/extensions/8.0/igbinary new file mode 120000 index 00000000..c57a5ab9 --- /dev/null +++ b/extensions/8.0/igbinary @@ -0,0 +1 @@ +../core/igbinary \ No newline at end of file diff --git a/extensions/8.0/imagick b/extensions/8.0/imagick new file mode 120000 index 00000000..308094fe --- /dev/null +++ b/extensions/8.0/imagick @@ -0,0 +1 @@ +../core/imagick/ \ No newline at end of file diff --git a/extensions/8.0/imap b/extensions/8.0/imap new file mode 120000 index 00000000..4ee55a28 --- /dev/null +++ b/extensions/8.0/imap @@ -0,0 +1 @@ +../core/imap \ No newline at end of file diff --git a/extensions/8.0/install_all.sh b/extensions/8.0/install_all.sh new file mode 120000 index 00000000..615edbef --- /dev/null +++ b/extensions/8.0/install_all.sh @@ -0,0 +1 @@ +../core/install_all.sh \ No newline at end of file diff --git a/extensions/8.0/intl b/extensions/8.0/intl new file mode 120000 index 00000000..dd21da0b --- /dev/null +++ b/extensions/8.0/intl @@ -0,0 +1 @@ +../core/intl \ No newline at end of file diff --git a/extensions/8.0/ldap b/extensions/8.0/ldap new file mode 120000 index 00000000..394c7519 --- /dev/null +++ b/extensions/8.0/ldap @@ -0,0 +1 @@ +../core/ldap \ No newline at end of file diff --git a/extensions/8.0/mailparse b/extensions/8.0/mailparse new file mode 120000 index 00000000..e29c74c5 --- /dev/null +++ b/extensions/8.0/mailparse @@ -0,0 +1 @@ +../core/mailparse \ No newline at end of file diff --git a/extensions/8.0/memcached b/extensions/8.0/memcached new file mode 120000 index 00000000..13f2ea8c --- /dev/null +++ b/extensions/8.0/memcached @@ -0,0 +1 @@ +../core/memcached \ No newline at end of file diff --git a/extensions/8.0/msgpack b/extensions/8.0/msgpack new file mode 120000 index 00000000..2a72eaa8 --- /dev/null +++ b/extensions/8.0/msgpack @@ -0,0 +1 @@ +../core/msgpack \ No newline at end of file diff --git a/extensions/8.0/mysqli b/extensions/8.0/mysqli new file mode 120000 index 00000000..f752c283 --- /dev/null +++ b/extensions/8.0/mysqli @@ -0,0 +1 @@ +../core/mysqli \ No newline at end of file diff --git a/extensions/8.0/pdo_dblib b/extensions/8.0/pdo_dblib new file mode 120000 index 00000000..2261140c --- /dev/null +++ b/extensions/8.0/pdo_dblib @@ -0,0 +1 @@ +../core/pdo_dblib \ No newline at end of file diff --git a/extensions/8.0/pdo_mysql b/extensions/8.0/pdo_mysql new file mode 120000 index 00000000..f752c283 --- /dev/null +++ b/extensions/8.0/pdo_mysql @@ -0,0 +1 @@ +../core/mysqli \ No newline at end of file diff --git a/extensions/8.0/pdo_pgsql b/extensions/8.0/pdo_pgsql new file mode 120000 index 00000000..29ac8e8b --- /dev/null +++ b/extensions/8.0/pdo_pgsql @@ -0,0 +1 @@ +../core/pgsql \ No newline at end of file diff --git a/extensions/8.0/pdo_sqlite b/extensions/8.0/pdo_sqlite new file mode 120000 index 00000000..45ffc754 --- /dev/null +++ b/extensions/8.0/pdo_sqlite @@ -0,0 +1 @@ +../core/sqlite3 \ No newline at end of file diff --git a/extensions/8.0/pgsql b/extensions/8.0/pgsql new file mode 120000 index 00000000..29ac8e8b --- /dev/null +++ b/extensions/8.0/pgsql @@ -0,0 +1 @@ +../core/pgsql \ No newline at end of file diff --git a/extensions/8.0/pspell b/extensions/8.0/pspell new file mode 120000 index 00000000..9be96fd9 --- /dev/null +++ b/extensions/8.0/pspell @@ -0,0 +1 @@ +../core/pspell \ No newline at end of file diff --git a/extensions/8.0/redis b/extensions/8.0/redis new file mode 120000 index 00000000..0727c021 --- /dev/null +++ b/extensions/8.0/redis @@ -0,0 +1 @@ +../core/redis \ No newline at end of file diff --git a/extensions/8.0/snmp b/extensions/8.0/snmp new file mode 120000 index 00000000..f2249ffe --- /dev/null +++ b/extensions/8.0/snmp @@ -0,0 +1 @@ +../core/snmp \ No newline at end of file diff --git a/extensions/8.0/soap b/extensions/8.0/soap new file mode 120000 index 00000000..ea63abf6 --- /dev/null +++ b/extensions/8.0/soap @@ -0,0 +1 @@ +../core/soap \ No newline at end of file diff --git a/extensions/8.0/sqlite3 b/extensions/8.0/sqlite3 new file mode 120000 index 00000000..abddf395 --- /dev/null +++ b/extensions/8.0/sqlite3 @@ -0,0 +1 @@ +../core/sqlite3/ \ No newline at end of file diff --git a/extensions/8.0/tidy b/extensions/8.0/tidy new file mode 120000 index 00000000..e0434e64 --- /dev/null +++ b/extensions/8.0/tidy @@ -0,0 +1 @@ +../core/tidy \ No newline at end of file diff --git a/extensions/8.0/uuid b/extensions/8.0/uuid new file mode 120000 index 00000000..2e96802e --- /dev/null +++ b/extensions/8.0/uuid @@ -0,0 +1 @@ +../core/uuid/ \ No newline at end of file diff --git a/extensions/8.0/xdebug b/extensions/8.0/xdebug new file mode 120000 index 00000000..ee4c5321 --- /dev/null +++ b/extensions/8.0/xdebug @@ -0,0 +1 @@ +../core/xdebug/ \ No newline at end of file diff --git a/extensions/8.0/yaml b/extensions/8.0/yaml new file mode 120000 index 00000000..4be2658a --- /dev/null +++ b/extensions/8.0/yaml @@ -0,0 +1 @@ +../core/yaml \ No newline at end of file diff --git a/extensions/core/swoole/install.sh b/extensions/core/swoole/install.sh old mode 100755 new mode 100644 diff --git a/orbit.yml b/orbit.yml index eb4a5bb1..7d445547 100644 --- a/orbit.yml +++ b/orbit.yml @@ -23,15 +23,15 @@ tasks: - orbit generate -f utils/Dockerfile.slim.blueprint -o Dockerfile.slim.cli -p "variant,cli" - orbit generate -f utils/Dockerfile.slim.blueprint -o Dockerfile.slim.fpm -p "variant,fpm" - orbit generate -f utils/Dockerfile.blueprint -o Dockerfile.apache -p "variant,apache;node_version," - - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.apache.node8 -p "variant,apache;node_version,8" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.apache.node10 -p "variant,apache;node_version,10" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.apache.node12 -p "variant,apache;node_version,12" + - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.apache.node14 -p "variant,apache;node_version,14" - orbit generate -f utils/Dockerfile.blueprint -o Dockerfile.cli -p "variant,cli;node_version," - - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.cli.node8 -p "variant,cli;node_version,8" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.cli.node10 -p "variant,cli;node_version,10" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.cli.node12 -p "variant,cli;node_version,12" + - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.cli.node14 -p "variant,cli;node_version,14" - orbit generate -f utils/Dockerfile.blueprint -o Dockerfile.fpm -p "variant,fpm;node_version," - - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node8 -p "variant,fpm;node_version,8" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node10 -p "variant,fpm;node_version,10" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node12 -p "variant,fpm;node_version,12" + - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node14 -p "variant,fpm;node_version,14" - orbit generate -f utils/README.blueprint.md -o README.md diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index 61d83557..f93617f5 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -38,12 +38,12 @@ RUN apt-get update \ curl \ php${PHP_VERSION}-cli \ php${PHP_VERSION}-curl \ - php${PHP_VERSION}-json \ php${PHP_VERSION}-mbstring \ php${PHP_VERSION}-opcache \ php${PHP_VERSION}-readline \ php${PHP_VERSION}-xml \ php${PHP_VERSION}-zip \ + && if [ "${PHP_VERSION}" = "7.1" ] || [ "${PHP_VERSION}" = "7.2" ] || [ "${PHP_VERSION}" = "7.3" ] || [ "${PHP_VERSION}" = "7.4" ]; then apt-get install -y --no-install-recommends php${PHP_VERSION}-json; fi \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* /usr/share/doc/* @@ -88,7 +88,7 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --1 --install-dir=/usr/local/bin --filename=real_composer &&\ +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ chmod +x /usr/local/bin/real_composer # TODO: utils.php in /usr/local/bin... bof! diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index 4d4928f9..77df939b 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -1,4 +1,4 @@ -[![Build Status](https://travis-ci.org/thecodingmachine/docker-images-php.svg?branch=v3)](https://travis-ci.org/thecodingmachine/docker-images-php) +[![Build Status](https://travis-ci.org/thecodingmachine/docker-images-php.svg?branch=v4)](https://travis-ci.org/thecodingmachine/docker-images-php) # General purpose PHP images for Docker @@ -20,29 +20,29 @@ This repository contains a set of developer-friendly, general purpose PHP images | Name | PHP version | type |variant | NodeJS version | Size |-------------------------------------------------------------------------|------------------------------|------|--------|-----------------|------ -{{range $versions}}| [thecodingmachine/php:{{ . }}-v3-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache) | `{{ . }}.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-apache.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-apache) -| [thecodingmachine/php:{{ . }}-v3-apache-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node8) | `{{ . }}.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-apache-node8.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-apache-node8) -| [thecodingmachine/php:{{ . }}-v3-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node10) | `{{ . }}.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-apache-node10) -| [thecodingmachine/php:{{ . }}-v3-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.apache.node12) | `{{ . }}.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-apache-node12) -| [thecodingmachine/php:{{ . }}-v3-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm) | `{{ . }}.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-fpm) -| [thecodingmachine/php:{{ . }}-v3-fpm-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node8) | `{{ . }}.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-fpm-node8.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-fpm-node8) -| [thecodingmachine/php:{{ . }}-v3-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node10) | `{{ . }}.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-fpm-node10) -| [thecodingmachine/php:{{ . }}-v3-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.fpm.node12) | `{{ . }}.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-fpm-node12) -| [thecodingmachine/php:{{ . }}-v3-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli) | `{{ . }}.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-cli.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-cli) -| [thecodingmachine/php:{{ . }}-v3-cli-node8](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node8) | `{{ . }}.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-cli-node8.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-cli-node8) -| [thecodingmachine/php:{{ . }}-v3-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node10) | `{{ . }}.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-cli-node10) -| [thecodingmachine/php:{{ . }}-v3-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.cli.node12) | `{{ . }}.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-cli-node12) -| [thecodingmachine/php:{{ . }}-v3-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.apache) | `{{ . }}.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-slim-apache) -| [thecodingmachine/php:{{ . }}-v3-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.fpm) | `{{ . }}.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-slim-fpm) -| [thecodingmachine/php:{{ . }}-v3-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v3/Dockerfile.slim.cli) | `{{ . }}.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v3-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v3-slim-cli) +{{range $versions}}| [thecodingmachine/php:{{ . }}-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `{{ . }}.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-apache) +| [thecodingmachine/php:{{ . }}-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `{{ . }}.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-apache-node10) +| [thecodingmachine/php:{{ . }}-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `{{ . }}.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-apache-node12) +| [thecodingmachine/php:{{ . }}-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `{{ . }}.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-apache-node14) +| [thecodingmachine/php:{{ . }}-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `{{ . }}.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-fpm) +| [thecodingmachine/php:{{ . }}-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `{{ . }}.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-fpm-node10) +| [thecodingmachine/php:{{ . }}-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `{{ . }}.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-fpm-node12) +| [thecodingmachine/php:{{ . }}-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `{{ . }}.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-fpm-node14) +| [thecodingmachine/php:{{ . }}-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `{{ . }}.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-cli) +| [thecodingmachine/php:{{ . }}-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `{{ . }}.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-cli-node10) +| [thecodingmachine/php:{{ . }}-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `{{ . }}.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-cli-node12) +| [thecodingmachine/php:{{ . }}-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `{{ . }}.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-cli-node14) +| [thecodingmachine/php:{{ . }}-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `{{ . }}.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-slim-apache) +| [thecodingmachine/php:{{ . }}-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `{{ . }}.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-slim-fpm) +| [thecodingmachine/php:{{ . }}-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `{{ . }}.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-slim-cli) {{end}} -Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.1, one for PHP 7.2, -but no tagged image for PHP 7.1.12. This is because we believe you have no valid reason to ask explicitly for 7.1.12. -When 7.1.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. +Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.3, one for PHP 7.4, +but no tagged image for PHP 7.3.12. This is because we believe you have no valid reason to ask explicitly for 7.3.12. +When 7.3.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. -Images are automatically updated when a new patch version of PHP is released, so the PHP 7.1 image will always contain -the most up-to-date version of the PHP 7.1.x branch. If you want to automatically update your images on your production +Images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain +the most up-to-date version of the PHP 7.4.x branch. If you want to automatically update your images on your production environment, you can use tools like [watchtower](https://github.com/containrrr/watchtower) that will monitor new versions of the images and update your environment on the fly. @@ -53,26 +53,26 @@ These images are based on the [official PHP image](https://hub.docker.com/_/php/ Example with CLI: ```bash -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app thecodingmachine/php:{{ $image.php_version }}-v3-cli php your-script.php +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/app thecodingmachine/php:{{ $image.php_version }}-v4-cli php your-script.php ``` Example with Apache: ```bash -$ docker run -p 80:80 --rm --name my-apache-php-app -v "$PWD":/var/www/html thecodingmachine/php:{{ $image.php_version }}-v3-apache +$ docker run -p 80:80 --rm --name my-apache-php-app -v "$PWD":/var/www/html thecodingmachine/php:{{ $image.php_version }}-v4-apache ``` Example with PHP-FPM: ```bash -$ docker run -p 9000:9000 --rm --name my-php-fpm -v "$PWD":/var/www/html thecodingmachine/php:{{ $image.php_version }}-v3-fpm +$ docker run -p 9000:9000 --rm --name my-php-fpm -v "$PWD":/var/www/html thecodingmachine/php:{{ $image.php_version }}-v4-fpm ``` Example with Apache + Node 8.x in a Dockerfile: **Dockerfile** ```Dockerfile -FROM thecodingmachine/php:{{ $image.php_version }}-v3-apache-node8 +FROM thecodingmachine/php:{{ $image.php_version }}-v4-apache-node14 COPY src/ /var/www/html/ RUN composer install @@ -107,6 +107,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) +- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image @@ -118,7 +119,7 @@ For instance: version: '3' services: my_app: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache-node8 + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache-node14 environment: # Enable the PostgreSQL extension PHP_EXTENSION_PGSQL: 1 @@ -138,7 +139,7 @@ If you are using the slim image, you can automatically compile the extensions us ```Dockerfile ARG PHP_EXTENSIONS="apcu mysqli pdo_mysql redis soap" -FROM thecodingmachine/php:{{ $image.php_version }}-v3-slim-apache +FROM thecodingmachine/php:{{ $image.php_version }}-v4-slim-apache # The build will automatically trigger the download and compilation # of the extensions (thanks to a ONBUILD hook in the slim image) ``` @@ -155,7 +156,7 @@ first FROM): # The PHP_EXTENSIONS ARG will apply to the "slim" image ARG PHP_EXTENSIONS="apcu mysqli opcache pdo_mysql zip soap" -FROM thecodingmachine/php:7.2-v3-apache-node10 AS builder +FROM thecodingmachine/php:7.2-v4-apache-node10 AS builder COPY --chown=docker:docker sources/web . RUN composer install &&\ @@ -163,7 +164,7 @@ RUN composer install &&\ yarn build # The slim image will automatically build the extensions from the list provided at the very top of the file. -FROM thecodingmachine/php:7.2-v3-slim-apache +FROM thecodingmachine/php:7.2-v4-slim-apache ENV APP_ENV=prod \ APACHE_DOCUMENT_ROOT=public/ @@ -191,7 +192,7 @@ You can override parameters in `php.ini` using the PHP_INI_XXX environment varia version: '3' services: my_app: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache-node8 + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache-node14 environment: # set the parameter memory_limit=1g PHP_INI_MEMORY_LIMIT: 1g @@ -253,7 +254,7 @@ For instance: version: '3' services: my_app: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache-node8 + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache-node14 environment: # Enable the DAV extension for Apache APACHE_EXTENSION_DAV: 1 @@ -280,23 +281,23 @@ To enable XDebug, you simply have to set the environment variable: PHP_EXTENSION_XDEBUG=1 ``` -If you enable XDebug, the image will do its best to configure the `xdebug.remote_host` to point back to your Docker host. +If you enable XDebug, the image will do its best to configure the `xdebug.client_host` to point back to your Docker host. Behind the scenes, the image will: -- set the parameter `xdebug.remote_enable=1` -- if you are using a Linux or Windows machine, the `xdebug.remote_host` IP will point to your Docker gateway -- if you are using a MaxOS machine, the `xdebug.remote_host` IP will point to [`docker.for.mac.localhost`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) +- set the parameter `xdebug.mode=debug` +- if you are using a Linux machine, the `xdebug.client_host` IP will point to your Docker gateway +- if you are using a Windows or MaxOS machine, the `xdebug.client_host` IP will point to [`host.docker.internal`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) or [`docker.for.mac.localhost`](https://docs.docker.com/docker-for-mac/networking/#use-cases-and-workarounds) ## NodeJS -The *fat* images come with a Node variant. You can use Node 8 or Node 10. If you need a Node 6 variant, [use thecodingmachine/php v1 images](https://github.com/thecodingmachine/docker-images-php/tree/7.2-v1). +The *fat* images come with a Node variant. You can use Node 10, 12 or 14. If you need a Node 8 variant, [use thecodingmachine/php v4 images](https://github.com/thecodingmachine/docker-images-php/tree/v4). If you need a Node 6 variant, [use thecodingmachine/php v1 images](https://github.com/thecodingmachine/docker-images-php/tree/7.2-v1). If you use the *slim* images, you can install a NodeJS version with a simple ARG during the build: ```Dockerfile -ARG NODE_VERSION=10 -FROM thecodingmachine/php:{{ $image.php_version }}-v3-slim-apache +ARG NODE_VERSION=14 +FROM thecodingmachine/php:{{ $image.php_version }}-v4-slim-apache # The build will automatically trigger the download of Node 10 # (thanks to a ONBUILD hook in the slim image) ``` @@ -349,7 +350,7 @@ This can be done easily: **Dockerfile** ``` -FROM thecodingmachine/php:{{ $image.php_version }}-v3-apache +FROM thecodingmachine/php:{{ $image.php_version }}-v4-apache # ... @@ -393,7 +394,7 @@ a single argument before the "FROM" clause in your Dockerfile: ```Dockerfile ARG INSTALL_CRON=1 -FROM thecodingmachine/php:{{ $image.php_version }}-v3-slim-apache +FROM thecodingmachine/php:{{ $image.php_version }}-v4-slim-apache # The build triggers automatically the installation of Cron ``` @@ -446,12 +447,12 @@ If such a file is mounted in the image, it will be executed on container startup ```bash docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp \ - -v $PWD/my-startup-script.sh:/etc/container/startup.sh thecodingmachine/php:{{ $image.php_version }}-v3-cli php your-script.php + -v $PWD/my-startup-script.sh:/etc/container/startup.sh thecodingmachine/php:{{ $image.php_version }}-v4-cli php your-script.php ``` ## Using the CLI variant -The CLI images (thecodingmachine/php:7.x-v3-cli) expect a command to be passed in parameter. +The CLI images (thecodingmachine/php:7.x-v4-cli) expect a command to be passed in parameter. You should override the Docker "command". Important! You should not override the Docker "entrypoint". @@ -459,7 +460,7 @@ Important! You should not override the Docker "entrypoint". **Usage in a Dockerfile:** ```Dockerfile -FROM thecodingmachine/php:{{ $image.php_version }}-v3-cli +FROM thecodingmachine/php:{{ $image.php_version }}-v4-cli CMD ["php", "myprogram.php", "some_param"] ``` @@ -471,7 +472,7 @@ CMD ["php", "myprogram.php", "some_param"] version: '3' services: my_app: - image: thecodingmachine/php:{{ $image.php_version }}-v3-cli + image: thecodingmachine/php:{{ $image.php_version }}-v4-cli command: php myprogram.php some_param ``` @@ -491,7 +492,7 @@ This option is the easiest way to go if you are using the image on a development version: '3' services: my_app: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache-node8 + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache-node14 volumes: - ~/.ssh:/home/docker/.ssh ``` @@ -512,7 +513,7 @@ Now, let's write a Dockerfile. **Dockerfile** ```yml -FROM thecodingmachine/php:{{ $image.php_version }}-v3-apache +FROM thecodingmachine/php:{{ $image.php_version }}-v4-apache ARG SSH_PRIVATE_KEY ARG SSH_KNOWN_HOSTS @@ -550,7 +551,7 @@ kind: Pod spec: containers: - name: foobar - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache securityContext: allowPrivilegeEscalation: true # never use "false" here. ``` @@ -572,7 +573,7 @@ Your `docker-compose.yml` file will typically look like this: version: '3.3' services: php: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache ports: - "80:80" environment: @@ -598,7 +599,7 @@ If for some reason, the container name is not "blackfire", you can customize the version: '3.3' services: php: - image: thecodingmachine/php:{{ $image.php_version }}-v3-apache + image: thecodingmachine/php:{{ $image.php_version }}-v4-apache environment: PHP_EXTENSION_BLACKFIRE: 1 BLACKFIRE_AGENT: myblackfire @@ -633,7 +634,7 @@ This command will generate all the files from the "blueprint" templates. You can then test your changes using the `build-and-test.sh` command: ```bash -PHP_VERSION={{ $image.php_version }} BRANCH=v3 VARIANT=apache ./build-and-test.sh +PHP_VERSION={{ $image.php_version }} BRANCH=v4 VARIANT=apache ./build-and-test.sh ``` ### Adding additional images diff --git a/utils/docker-entrypoint-as-root.sh b/utils/docker-entrypoint-as-root.sh index f8c6c9ea..ff7addd6 100755 --- a/utils/docker-entrypoint-as-root.sh +++ b/utils/docker-entrypoint-as-root.sh @@ -81,8 +81,8 @@ set +e chown $DOCKER_USER /proc/self/fd/{1,2} set -e -if [ -z "$XDEBUG_REMOTE_HOST" ]; then - export XDEBUG_REMOTE_HOST=`/sbin/ip route|awk '/default/ { print $3 }'` +if [ -z "$XDEBUG_CLIENT_HOST" ]; then + export XDEBUG_CLIENT_HOST=`/sbin/ip route|awk '/default/ { print $3 }'` set +e # On Windows and MacOS with Docker >= 18.03, check that host.docker.internal exists. it true, use this. @@ -92,7 +92,7 @@ if [ -z "$XDEBUG_REMOTE_HOST" ]; then # The host exists. DOCKER_HOST_INTERNAL=`host -t A host.docker.internal | awk '/has address/ { print $4 }'` if [ "$DOCKER_HOST_INTERNAL" != "127.0.0.1" ]; then - export XDEBUG_REMOTE_HOST=$DOCKER_HOST_INTERNAL + export XDEBUG_CLIENT_HOST=$DOCKER_HOST_INTERNAL export REMOTE_HOST_FOUND=1 fi fi @@ -106,7 +106,7 @@ if [ -z "$XDEBUG_REMOTE_HOST" ]; then # The host exists. DOCKER_FOR_MAC_REMOTE_HOST=`host -t A docker.for.mac.localhost | awk '/has address/ { print $4 }'` if [ "$DOCKER_FOR_MAC_REMOTE_HOST" != "127.0.0.1" ]; then - export XDEBUG_REMOTE_HOST=$DOCKER_FOR_MAC_REMOTE_HOST + export XDEBUG_CLIENT_HOST=$DOCKER_FOR_MAC_REMOTE_HOST fi fi fi diff --git a/utils/generate_conf.php b/utils/generate_conf.php index ab5d4953..d5488422 100644 --- a/utils/generate_conf.php +++ b/utils/generate_conf.php @@ -26,8 +26,8 @@ if (enableExtension('xdebug')) { //echo "zend_extension=xdebug.so\n"; - echo "xdebug.remote_host=".getenv('XDEBUG_REMOTE_HOST')."\n"; - echo "xdebug.remote_enable=on\n"; + echo "xdebug.client_host=".getenv('XDEBUG_CLIENT_HOST')."\n"; + echo "xdebug.mode=debug\n"; //echo "xdebug.remote_autostart=off\n"; //echo "xdebug.remote_port=9000\n"; //echo "xdebug.remote_connect_back=0\n"; diff --git a/utils/setup_extensions.php b/utils/setup_extensions.php index dfa8ca3e..1396f272 100755 --- a/utils/setup_extensions.php +++ b/utils/setup_extensions.php @@ -59,6 +59,12 @@ unset($toDisable['mysqlnd']); } +// curl is a dependency required for blackfire 8 (see https://blog.blackfire.io/php-8-support.html) +/*if (enableExtension('blackfire')) { + $toEnable['curl'] = 'curl'; + unset($toDisable['curl']); +}*/ + if ($toDisable) { echo 'phpdismod '.implode(' ', $toDisable)."\n"; } From 91da97e23f9acbf0179f9dd932c27f575aaf06ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Sat, 28 Nov 2020 16:18:10 +0100 Subject: [PATCH 03/26] Also tagging PHP patch releases (in case of a regression in PHP) --- .travis.yml | 7 +++++++ README.md | 16 ++++++++-------- utils/README.blueprint.md | 16 ++++++++-------- 3 files changed, 23 insertions(+), 16 deletions(-) diff --git a/.travis.yml b/.travis.yml index d9d39f3d..b843d020 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,4 +55,11 @@ script: docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node10 docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node12 docker push thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node14 + # Let's also tag PHP patch releases + PHP_PATCH_VERSION=`docker run --rm thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-slim-${BRANCH_VARIANT} php -v | head -n1 | grep -P '\d+\.\d+\.\d+' -o` + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-${TRAVIS_BRANCH}-slim-${BRANCH_VARIANT} thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-slim-${BRANCH_VARIANT} + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT} thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT} + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node10 thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node10 + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node12 thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node12 + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node14 thecodingmachine/php:${PHP_VERSION}-${TRAVIS_BRANCH}-${BRANCH_VARIANT}-node14 fi diff --git a/README.md b/README.md index ef807855..dab3d2de 100644 --- a/README.md +++ b/README.md @@ -82,14 +82,14 @@ This repository contains a set of developer-friendly, general purpose PHP images | [thecodingmachine/php:7.1-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.1.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-cli) -Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.3, one for PHP 7.4, -but no tagged image for PHP 7.3.12. This is because we believe you have no valid reason to ask explicitly for 7.3.12. -When 7.3.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. - -Images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain -the most up-to-date version of the PHP 7.4.x branch. If you want to automatically update your images on your production -environment, you can use tools like [watchtower](https://github.com/containrrr/watchtower) that will monitor new versions of -the images and update your environment on the fly. + +Note: we also tag patch releases of PHP versions. So you can specify a specific patch release using thecodingmachine/php:**8.0.2**-v4-cli for instance. +However, unless you have a **very specific need** (for instance if the latest patch release of PHP introduced regressions), believe you have no valid reason to ask explicitly for 8.0.2 for instance. +When 8.0.3 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. +Also, we automatically rebuild X.Y images every week, but only the latest X.Y.Z patch release gets a rebuild. The other patch releases are frozen in time and will contain bugs and security issues. So use those with great care. + +[Major].[minor] images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain +the most up-to-date version of the PHP 7.4.x branch. ## Usage diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index 77df939b..9ee02e10 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -37,14 +37,14 @@ This repository contains a set of developer-friendly, general purpose PHP images | [thecodingmachine/php:{{ . }}-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `{{ . }}.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:{{ . }}-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:{{ . }}-v4-slim-cli) {{end}} -Note: we do not tag patch releases of PHP, only minor versions. You will find one image for PHP 7.3, one for PHP 7.4, -but no tagged image for PHP 7.3.12. This is because we believe you have no valid reason to ask explicitly for 7.3.12. -When 7.3.13 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. - -Images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain -the most up-to-date version of the PHP 7.4.x branch. If you want to automatically update your images on your production -environment, you can use tools like [watchtower](https://github.com/containrrr/watchtower) that will monitor new versions of -the images and update your environment on the fly. + +Note: we also tag patch releases of PHP versions. So you can specify a specific patch release using thecodingmachine/php:**8.0.2**-v4-cli for instance. +However, unless you have a **very specific need** (for instance if the latest patch release of PHP introduced regressions), believe you have no valid reason to ask explicitly for 8.0.2 for instance. +When 8.0.3 is out, you certainly want to upgrade automatically to this patch release since patch releases contain only bugfixes. +Also, we automatically rebuild X.Y images every week, but only the latest X.Y.Z patch release gets a rebuild. The other patch releases are frozen in time and will contain bugs and security issues. So use those with great care. + +[Major].[minor] images are automatically updated when a new patch version of PHP is released, so the PHP 7.4 image will always contain +the most up-to-date version of the PHP 7.4.x branch. ## Usage From 3a1080863ba158dbd99aa324215c1b5946a9501b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Wed, 2 Dec 2020 10:35:31 +0100 Subject: [PATCH 04/26] Adding PHP proxy instead of Composer proxy --- Dockerfile.slim.apache | 7 ++++--- Dockerfile.slim.cli | 7 ++++--- Dockerfile.slim.fpm | 7 ++++--- utils/Dockerfile.slim.blueprint | 7 ++++--- utils/composer_proxy.php | 16 ---------------- utils/docker-entrypoint-as-root.sh | 2 +- utils/php_proxy.sh | 10 ++++++++++ 7 files changed, 27 insertions(+), 29 deletions(-) delete mode 100755 utils/composer_proxy.php create mode 100755 utils/php_proxy.sh diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index b25fff07..6802c134 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -86,12 +86,13 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ - chmod +x /usr/local/bin/real_composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer &&\ + chmod +x /usr/local/bin/composer # TODO: utils.php in /usr/local/bin... bof! COPY utils/utils.php /usr/local/bin/utils.php -COPY utils/composer_proxy.php /usr/local/bin/composer +RUN mv /usr/bin/php /usr/bin/real_php +COPY utils/php_proxy.sh /usr/bin/php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index 50843b2a..944b2732 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -86,12 +86,13 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ - chmod +x /usr/local/bin/real_composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer &&\ + chmod +x /usr/local/bin/composer # TODO: utils.php in /usr/local/bin... bof! COPY utils/utils.php /usr/local/bin/utils.php -COPY utils/composer_proxy.php /usr/local/bin/composer +RUN mv /usr/bin/php /usr/bin/real_php +COPY utils/php_proxy.sh /usr/bin/php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index 87a61987..dec68924 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -86,12 +86,13 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ - chmod +x /usr/local/bin/real_composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer &&\ + chmod +x /usr/local/bin/composer # TODO: utils.php in /usr/local/bin... bof! COPY utils/utils.php /usr/local/bin/utils.php -COPY utils/composer_proxy.php /usr/local/bin/composer +RUN mv /usr/bin/php /usr/bin/real_php +COPY utils/php_proxy.sh /usr/bin/php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index f93617f5..676ad905 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -88,12 +88,13 @@ RUN rm /etc/php/${PHP_VERSION}/cli/php.ini #ENV COMPOSER_ALLOW_SUPERUSER 1 -RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=real_composer &&\ - chmod +x /usr/local/bin/real_composer +RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer &&\ + chmod +x /usr/local/bin/composer # TODO: utils.php in /usr/local/bin... bof! COPY utils/utils.php /usr/local/bin/utils.php -COPY utils/composer_proxy.php /usr/local/bin/composer +RUN mv /usr/bin/php /usr/bin/real_php +COPY utils/php_proxy.sh /usr/bin/php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php diff --git a/utils/composer_proxy.php b/utils/composer_proxy.php deleted file mode 100755 index d4362fef..00000000 --- a/utils/composer_proxy.php +++ /dev/null @@ -1,16 +0,0 @@ -#!/usr/bin/env php - /dev/null'); - passthru('php /usr/local/bin/setup_extensions.php | sudo bash'); -} - -array_shift($argv); - -$args = array_map(function(string $item) { return escapeshellarg($item); }, $argv); - -// Let's pass the command down to the real composer -passthru('real_composer '.implode(' ', $args), $exitCode); -exit($exitCode); diff --git a/utils/docker-entrypoint-as-root.sh b/utils/docker-entrypoint-as-root.sh index ff7addd6..4b6ace36 100755 --- a/utils/docker-entrypoint-as-root.sh +++ b/utils/docker-entrypoint-as-root.sh @@ -2,7 +2,7 @@ set -e -# Let's write a file saying the container is started (we are no longer in build mode, useful for composer_proxy.php) +# Let's write a file saying the container is started (we are no longer in build mode, useful for php_proxy.sh) touch /opt/container_started # Let's apply the requested php.ini file diff --git a/utils/php_proxy.sh b/utils/php_proxy.sh new file mode 100755 index 00000000..7699e29f --- /dev/null +++ b/utils/php_proxy.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +# We regenerate the configuration from environment variable, but only if the container is not started (i.e. if we are in a BUILD stage or if overloading the entrypoint) +if [[ ! -f /opt/container_started ]]; then + /usr/bin/real_php /usr/local/bin/generate_conf.php | sudo tee "/etc/php/${PHP_VERSION}/mods-available/generated_conf.ini" > /dev/null + /usr/bin/real_php /usr/local/bin/setup_extensions.php | sudo bash + sudo touch /opt/container_started +fi + +/usr/bin/real_php "$@" From dc0342cd08122c264a429a3606dec3a6d79c8c66 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Fri, 4 Dec 2020 15:20:55 +0100 Subject: [PATCH 05/26] Add v4-dev Github actions --- .github/workflows/workflow.yml | 75 ++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 .github/workflows/workflow.yml diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml new file mode 100644 index 00000000..770e2965 --- /dev/null +++ b/.github/workflows/workflow.yml @@ -0,0 +1,75 @@ +name: Docker PHP Images GitHub workflow + +on: + pull_request: + branches: + - 'v4-dev' + push: + branches: + - 'v4-dev' +# schedule: +# - cron: '0 0 * * 0' + +jobs: + build_test_maybe_release: + strategy: + matrix: + include: + - variant: 'cli' + php_version: '8.0' + - variant: 'apache' + php_version: '8.0' + - variant: 'fpm' + php_version: '8.0' +# - variant: 'cli' +# php_version: '7.4' +# - variant: 'apache' +# php_version: '7.4' +# - variant: 'fpm' +# php_version: '7.4' +# - variant: 'cli' +# php_version: '7.3' +# - variant: 'apache' +# php_version: '7.3' +# - variant: 'fpm' +# php_version: '7.3' +# - variant: 'cli' +# php_version: '7.2' +# - variant: 'apache' +# php_version: '7.2' +# - variant: 'fpm' +# php_version: '7.2' +# - variant: 'cli' +# php_version: '7.1' +# - variant: 'apache' +# php_version: '7.1' +# - variant: 'fpm' +# php_version: '7.1' + runs-on: ubuntu-latest + steps: + - name: Set up QEMU + uses: docker/setup-qemu-action@v1 + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - uses: actions/checkout@v1 + - name: Build and test + run: | + PHP_VERSION="${{ matrix.php_version }}" BRANCH="v4-dev" VARIANT="${{ matrix.variant }}" ./build-and-test.sh + docker images | grep thecodingmachine/php +# - name: Login to DockerHub +# # Merge ~ push. +# if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} +# uses: docker/login-action@v1 +# with: +# username: ${{ secrets.DOCKERHUB_USERNAME }} +# password: ${{ secrets.DOCKERHUB_TOKEN }} +# - name: Release +# # Merge ~ push. +# if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} +# run: | +# BRANCH_VARIANT=`echo "${{ matrix.variant }}" | sed 's/\./-/g'` +# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-slim-${BRANCH_VARIANT} +# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT} +# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node8 +# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node10 +# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node12 \ No newline at end of file From 116609055fb82e4885f11c2eb5aca94c939eeb7c Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Fri, 4 Dec 2020 15:56:10 +0100 Subject: [PATCH 06/26] Remove container_started on base images so that new env var from user (php ext) can be setup --- utils/Dockerfile.blueprint | 2 ++ utils/Dockerfile.slim.blueprint | 2 ++ 2 files changed, 4 insertions(+) diff --git a/utils/Dockerfile.blueprint b/utils/Dockerfile.blueprint index 81cbcb08..a57ecb1a 100644 --- a/utils/Dockerfile.blueprint +++ b/utils/Dockerfile.blueprint @@ -28,3 +28,5 @@ ENV PHP_EXTENSION_APCU=1 \ PHP_EXTENSION_IGBINARY=1 \ PHP_EXTENSION_REDIS=1 \ PHP_EXTENSION_SOAP=1 + +RUN rm -f /opt/container_started diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index 676ad905..8c9c4f14 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -411,3 +411,5 @@ ONBUILD RUN if [ -n "$NODE_VERSION" ]; then \ sudo apt-get update && \ sudo apt-get install -y --no-install-recommends yarn; \ fi; + +RUN rm -f /opt/container_started From 8bfe6769874be109216059800f64c416a1720832 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Fri, 4 Dec 2020 16:57:22 +0100 Subject: [PATCH 07/26] Remove deletion of /opt/container_started --- .gitignore | 2 +- orbit.yml | 2 +- utils/Dockerfile.blueprint | 2 -- utils/Dockerfile.slim.blueprint | 2 -- 4 files changed, 2 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 17952c7f..48e1dca8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ .idea -tmp +tmp \ No newline at end of file diff --git a/orbit.yml b/orbit.yml index 7d445547..d2160ceb 100644 --- a/orbit.yml +++ b/orbit.yml @@ -34,4 +34,4 @@ tasks: - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node10 -p "variant,fpm;node_version,10" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node12 -p "variant,fpm;node_version,12" - orbit generate -f utils/Dockerfile.node.blueprint -o Dockerfile.fpm.node14 -p "variant,fpm;node_version,14" - - orbit generate -f utils/README.blueprint.md -o README.md + - orbit generate -f utils/README.blueprint.md -o README.md \ No newline at end of file diff --git a/utils/Dockerfile.blueprint b/utils/Dockerfile.blueprint index a57ecb1a..81cbcb08 100644 --- a/utils/Dockerfile.blueprint +++ b/utils/Dockerfile.blueprint @@ -28,5 +28,3 @@ ENV PHP_EXTENSION_APCU=1 \ PHP_EXTENSION_IGBINARY=1 \ PHP_EXTENSION_REDIS=1 \ PHP_EXTENSION_SOAP=1 - -RUN rm -f /opt/container_started diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index 8c9c4f14..676ad905 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -411,5 +411,3 @@ ONBUILD RUN if [ -n "$NODE_VERSION" ]; then \ sudo apt-get update && \ sudo apt-get install -y --no-install-recommends yarn; \ fi; - -RUN rm -f /opt/container_started From 6b60916732c8f917d65ab08e0e003637b8d04b1d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 4 Dec 2020 17:32:07 +0100 Subject: [PATCH 08/26] cleaning up /opt/container_started --- Dockerfile.apache | 3 ++- Dockerfile.cli | 3 ++- Dockerfile.fpm | 3 ++- Dockerfile.slim.apache | 2 +- Dockerfile.slim.cli | 2 +- Dockerfile.slim.fpm | 2 +- utils/Dockerfile.blueprint | 3 ++- utils/Dockerfile.slim.blueprint | 2 +- 8 files changed, 12 insertions(+), 8 deletions(-) diff --git a/Dockerfile.apache b/Dockerfile.apache index 41b5b0b5..26d126f1 100644 --- a/Dockerfile.apache +++ b/Dockerfile.apache @@ -14,7 +14,8 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ + rm /opt/container_started USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.cli b/Dockerfile.cli index 5c8662dd..6cf28969 100644 --- a/Dockerfile.cli +++ b/Dockerfile.cli @@ -14,7 +14,8 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ + rm /opt/container_started USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.fpm b/Dockerfile.fpm index 8621add5..8f9dbf88 100644 --- a/Dockerfile.fpm +++ b/Dockerfile.fpm @@ -14,7 +14,8 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ + rm /opt/container_started USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index 6802c134..9bb05614 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -328,7 +328,7 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P - +RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index 944b2732..69041c40 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -233,7 +233,7 @@ RUN touch /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini && ln -s /et - +RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index dec68924..c0d1ede8 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -256,7 +256,7 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P fi - +RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/utils/Dockerfile.blueprint b/utils/Dockerfile.blueprint index 81cbcb08..bd1b0b0f 100644 --- a/utils/Dockerfile.blueprint +++ b/utils/Dockerfile.blueprint @@ -16,7 +16,8 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ + rm /opt/container_started USER docker # |-------------------------------------------------------------------------- diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index 676ad905..fcd4d83c 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -360,7 +360,7 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P fi {{end}} - +RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php From 3cf28636f027fcadafc57da3268219f1d863b7e6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 4 Dec 2020 18:11:40 +0100 Subject: [PATCH 09/26] Migrating to Ubuntu 20.04 --- Dockerfile.slim.apache | 4 ++-- Dockerfile.slim.cli | 4 ++-- Dockerfile.slim.fpm | 4 ++-- MIGRATING.md | 9 +++++++++ README.md | 2 +- extensions/8.0/gettext | 1 - utils/Dockerfile.slim.blueprint | 4 ++-- 7 files changed, 18 insertions(+), 10 deletions(-) delete mode 120000 extensions/8.0/gettext diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index 9bb05614..337c1f95 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -1,4 +1,4 @@ -FROM ubuntu:bionic +FROM ubuntu:20.04 LABEL authors="Julien Neuhart , David Négrier " @@ -21,7 +21,7 @@ ENV PHP_VERSION=$PHP_VERSION # Install php an other packages RUN apt-get update \ && apt-get install -y --no-install-recommends gnupg \ - && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main" > /etc/apt/sources.list.d/ondrej-php.list \ + && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ondrej-php.list \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index 69041c40..ce28897c 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -1,4 +1,4 @@ -FROM ubuntu:bionic +FROM ubuntu:20.04 LABEL authors="Julien Neuhart , David Négrier " @@ -21,7 +21,7 @@ ENV PHP_VERSION=$PHP_VERSION # Install php an other packages RUN apt-get update \ && apt-get install -y --no-install-recommends gnupg \ - && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main" > /etc/apt/sources.list.d/ondrej-php.list \ + && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ondrej-php.list \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index c0d1ede8..0387cbd5 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -1,4 +1,4 @@ -FROM ubuntu:bionic +FROM ubuntu:20.04 LABEL authors="Julien Neuhart , David Négrier " @@ -21,7 +21,7 @@ ENV PHP_VERSION=$PHP_VERSION # Install php an other packages RUN apt-get update \ && apt-get install -y --no-install-recommends gnupg \ - && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main" > /etc/apt/sources.list.d/ondrej-php.list \ + && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ondrej-php.list \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \ && apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/MIGRATING.md b/MIGRATING.md index 1a5feab2..f9f91e0e 100644 --- a/MIGRATING.md +++ b/MIGRATING.md @@ -1,3 +1,12 @@ +# Migrating from v3 to v4 images + +Important changes: + +- v3 images are based on **Ubuntu 18.04**. v4 images are based on **Ubuntu 20.04**. +- Internally, the image will attempt to setup extensions / parameters on container startup (in the image entry point), + but also when PHP is run. This should help alleviate a part of the problems when the entrypoint is overloaded by the + user. + # Migrating from v2 to v3 images Important changes: diff --git a/README.md b/README.md index dab3d2de..a88f222b 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ +- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image diff --git a/extensions/8.0/gettext b/extensions/8.0/gettext deleted file mode 120000 index 0369641a..00000000 --- a/extensions/8.0/gettext +++ /dev/null @@ -1 +0,0 @@ -../core/gettext \ No newline at end of file diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index fcd4d83c..b04f9208 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -1,6 +1,6 @@ {{- $variant := .Orbit.variant -}} -FROM ubuntu:bionic +FROM ubuntu:20.04 LABEL authors="Julien Neuhart , David Négrier " @@ -23,7 +23,7 @@ ENV PHP_VERSION=$PHP_VERSION # Install php an other packages RUN apt-get update \ && apt-get install -y --no-install-recommends gnupg \ - && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu bionic main" > /etc/apt/sources.list.d/ondrej-php.list \ + && echo "deb http://ppa.launchpad.net/ondrej/php/ubuntu focal main" > /etc/apt/sources.list.d/ondrej-php.list \ && apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C \ && apt-get update \ && apt-get install -y --no-install-recommends \ From beeab9ab62d8c335f22915a53cdfc5995492ce51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Fri, 4 Dec 2020 18:32:16 +0100 Subject: [PATCH 10/26] Fixing Swoole --- extensions/core/swoole/install.sh | 0 utils/README.blueprint.md | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) mode change 100644 => 100755 extensions/core/swoole/install.sh diff --git a/extensions/core/swoole/install.sh b/extensions/core/swoole/install.sh old mode 100644 new mode 100755 diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index 9ee02e10..2804ddb1 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -107,7 +107,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ +- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image From 5432a01e527d0bb09ca50fc289fd1575ad46e594 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 11:51:40 +0100 Subject: [PATCH 11/26] Add PHP script for checking PHP_* env var changes --- Dockerfile.apache | 3 +-- Dockerfile.cli | 3 +-- Dockerfile.fpm | 3 +-- Dockerfile.slim.apache | 3 ++- Dockerfile.slim.cli | 3 ++- Dockerfile.slim.fpm | 3 ++- utils/Dockerfile.blueprint | 3 +-- utils/Dockerfile.slim.blueprint | 3 ++- utils/check_php_env_var_changes.php | 39 +++++++++++++++++++++++++++++ utils/php_env_var_cache.php | 2 ++ utils/php_proxy.sh | 6 ++--- 11 files changed, 56 insertions(+), 15 deletions(-) create mode 100644 utils/check_php_env_var_changes.php create mode 100644 utils/php_env_var_cache.php diff --git a/Dockerfile.apache b/Dockerfile.apache index 26d126f1..41b5b0b5 100644 --- a/Dockerfile.apache +++ b/Dockerfile.apache @@ -14,8 +14,7 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ - rm /opt/container_started +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.cli b/Dockerfile.cli index 6cf28969..5c8662dd 100644 --- a/Dockerfile.cli +++ b/Dockerfile.cli @@ -14,8 +14,7 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ - rm /opt/container_started +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.fpm b/Dockerfile.fpm index 8f9dbf88..8621add5 100644 --- a/Dockerfile.fpm +++ b/Dockerfile.fpm @@ -14,8 +14,7 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ - rm /opt/container_started +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh USER docker # |-------------------------------------------------------------------------- diff --git a/Dockerfile.slim.apache b/Dockerfile.slim.apache index 337c1f95..8612ae09 100644 --- a/Dockerfile.slim.apache +++ b/Dockerfile.slim.apache @@ -93,6 +93,8 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local COPY utils/utils.php /usr/local/bin/utils.php RUN mv /usr/bin/php /usr/bin/real_php COPY utils/php_proxy.sh /usr/bin/php +COPY utils/check_php_env_var_changes.php /usr/local/bin/check_php_env_var_changes.php +COPY utils/php_env_var_cache.php /opt/php_env_var_cache.php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php @@ -328,7 +330,6 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P -RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/Dockerfile.slim.cli b/Dockerfile.slim.cli index ce28897c..51b67e2f 100644 --- a/Dockerfile.slim.cli +++ b/Dockerfile.slim.cli @@ -93,6 +93,8 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local COPY utils/utils.php /usr/local/bin/utils.php RUN mv /usr/bin/php /usr/bin/real_php COPY utils/php_proxy.sh /usr/bin/php +COPY utils/check_php_env_var_changes.php /usr/local/bin/check_php_env_var_changes.php +COPY utils/php_env_var_cache.php /opt/php_env_var_cache.php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php @@ -233,7 +235,6 @@ RUN touch /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini && ln -s /et -RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index 0387cbd5..09135476 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -93,6 +93,8 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local COPY utils/utils.php /usr/local/bin/utils.php RUN mv /usr/bin/php /usr/bin/real_php COPY utils/php_proxy.sh /usr/bin/php +COPY utils/check_php_env_var_changes.php /usr/local/bin/check_php_env_var_changes.php +COPY utils/php_env_var_cache.php /opt/php_env_var_cache.php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php @@ -256,7 +258,6 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P fi -RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/utils/Dockerfile.blueprint b/utils/Dockerfile.blueprint index bd1b0b0f..81cbcb08 100644 --- a/utils/Dockerfile.blueprint +++ b/utils/Dockerfile.blueprint @@ -16,8 +16,7 @@ LABEL authors="Julien Neuhart , David Négrier < # | USER root -RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh && \ - rm /opt/container_started +RUN cd /usr/local/lib/thecodingmachine-php/extensions/current/ && ./install_all.sh && ./disable_all.sh USER docker # |-------------------------------------------------------------------------- diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index b04f9208..a41fbfba 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -95,6 +95,8 @@ RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local COPY utils/utils.php /usr/local/bin/utils.php RUN mv /usr/bin/php /usr/bin/real_php COPY utils/php_proxy.sh /usr/bin/php +COPY utils/check_php_env_var_changes.php /usr/local/bin/check_php_env_var_changes.php +COPY utils/php_env_var_cache.php /opt/php_env_var_cache.php COPY utils/generate_conf.php /usr/local/bin/generate_conf.php COPY utils/setup_extensions.php /usr/local/bin/setup_extensions.php @@ -360,7 +362,6 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P fi {{end}} -RUN rm /opt/container_started USER docker COPY utils/install_selected_extensions.php /usr/local/bin/install_selected_extensions.php diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php new file mode 100644 index 00000000..f05ffb85 --- /dev/null +++ b/utils/check_php_env_var_changes.php @@ -0,0 +1,39 @@ + $value) { + if (substr($key, 0, strlen('PHP_')) === 'PHP_') { + if (!isset($phpEnvVarCache[$key])) { + // The env var does not exist in the cache. + $shouldGenerateConfig = true; + } else if ($phpEnvVarCache[$key] !== $value) { + // The value has changed. + $shouldGenerateConfig = true; + } + + $phpEnvVar[$key] = $value; + } +} + +if ($shouldGenerateConfig === false) { + echo "0"; + exit(0); +} + +$cacheFileContent = ' $value) { + $cacheFileContent .= '$phpEnvCache["' . $key . '"] = "' . $value . '";' . PHP_EOL; +} + +$result = file_put_contents('/opt/php_env_var_cache.php', $cacheFileContent); +if ($result === false) { + exit(1); +} + +echo "1"; +exit(0); \ No newline at end of file diff --git a/utils/php_env_var_cache.php b/utils/php_env_var_cache.php new file mode 100644 index 00000000..d316981b --- /dev/null +++ b/utils/php_env_var_cache.php @@ -0,0 +1,2 @@ + /dev/null /usr/bin/real_php /usr/local/bin/setup_extensions.php | sudo bash - sudo touch /opt/container_started fi /usr/bin/real_php "$@" From 7c552cf1b4c876466764e94e7bfd892128f1427f Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 11:55:22 +0100 Subject: [PATCH 12/26] Fix typo in PHP script --- utils/check_php_env_var_changes.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php index f05ffb85..1afcf91e 100644 --- a/utils/check_php_env_var_changes.php +++ b/utils/check_php_env_var_changes.php @@ -27,7 +27,7 @@ $cacheFileContent = ' $value) { - $cacheFileContent .= '$phpEnvCache["' . $key . '"] = "' . $value . '";' . PHP_EOL; + $cacheFileContent .= '$phpEnvVarCache["' . $key . '"] = "' . $value . '";' . PHP_EOL; } $result = file_put_contents('/opt/php_env_var_cache.php', $cacheFileContent); From 290a02aee1bcf939b2dba3b782cc209aa5500696 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 14:27:46 +0100 Subject: [PATCH 13/26] Change APCu 'provider': from pecl to ondrej --- extensions/core/apcu/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/core/apcu/install.sh b/extensions/core/apcu/install.sh index b6405124..7e920e3d 100755 --- a/extensions/core/apcu/install.sh +++ b/extensions/core/apcu/install.sh @@ -1,6 +1,6 @@ #!/usr/bin/env bash set -e -export PECL_EXTENSION=apcu +export EXTENSION=apcu ../docker-install.sh From 478ff026bc7a29b6014cf5d7f58906d46527c79c Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 14:40:46 +0100 Subject: [PATCH 14/26] Refactor env var PHP script, remove sybase for PHP 8 --- README.md | 2 ++ extensions/8.0/pdo_dblib | 1 - utils/README.blueprint.md | 2 ++ utils/check_php_env_var_changes.php | 8 ++------ utils/php_env_var_cache.php | 3 ++- 5 files changed, 8 insertions(+), 8 deletions(-) delete mode 120000 extensions/8.0/pdo_dblib diff --git a/README.md b/README.md index a88f222b..36eb8beb 100644 --- a/README.md +++ b/README.md @@ -178,6 +178,8 @@ As an alternative, you can use the `PHP_EXTENSIONS` global variable: PHP_EXTENSIONS=pgsql gettext imap ``` +**Note:** Sybase extension is not available on PHP 8. + ### Compiling extensions in the slim image If you are using the slim image, you can automatically compile the extensions using the `PHP_EXTENSIONS` ARG in your Dockerfile. diff --git a/extensions/8.0/pdo_dblib b/extensions/8.0/pdo_dblib deleted file mode 120000 index 2261140c..00000000 --- a/extensions/8.0/pdo_dblib +++ /dev/null @@ -1 +0,0 @@ -../core/pdo_dblib \ No newline at end of file diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index 2804ddb1..d04f49f3 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -133,6 +133,8 @@ As an alternative, you can use the `PHP_EXTENSIONS` global variable: PHP_EXTENSIONS=pgsql gettext imap ``` +**Note:** Sybase extension is not available on PHP 8. + ### Compiling extensions in the slim image If you are using the slim image, you can automatically compile the extensions using the `PHP_EXTENSIONS` ARG in your Dockerfile. diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php index 1afcf91e..96249fc1 100644 --- a/utils/check_php_env_var_changes.php +++ b/utils/check_php_env_var_changes.php @@ -1,6 +1,6 @@ $value) { - $cacheFileContent .= '$phpEnvVarCache["' . $key . '"] = "' . $value . '";' . PHP_EOL; -} - +$cacheFileContent = ' Date: Mon, 7 Dec 2020 14:49:20 +0100 Subject: [PATCH 15/26] Add var_dump for (ugly) testing --- utils/check_php_env_var_changes.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php index 96249fc1..e6760e1e 100644 --- a/utils/check_php_env_var_changes.php +++ b/utils/check_php_env_var_changes.php @@ -3,6 +3,10 @@ $phpEnvVarCache = include '/opt/php_env_var_cache.php'; $envVars = getenv(); + +var_dump($envVars); +var_dump($phpEnvVarCache); + $shouldGenerateConfig = false; $phpEnvVar = []; From e4f1ca383817c66972d487331302edcfa3ac2a31 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 15:00:41 +0100 Subject: [PATCH 16/26] Still debugging --- utils/check_php_env_var_changes.php | 5 +---- utils/php_proxy.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php index e6760e1e..ac1d016a 100644 --- a/utils/check_php_env_var_changes.php +++ b/utils/check_php_env_var_changes.php @@ -3,10 +3,6 @@ $phpEnvVarCache = include '/opt/php_env_var_cache.php'; $envVars = getenv(); - -var_dump($envVars); -var_dump($phpEnvVarCache); - $shouldGenerateConfig = false; $phpEnvVar = []; @@ -32,6 +28,7 @@ $cacheFileContent = ' /dev/null /usr/bin/real_php /usr/local/bin/setup_extensions.php | sudo bash From 29a85d824eef15df1e788bac0682e3afc209b91d Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 15:11:24 +0100 Subject: [PATCH 17/26] Still debugging --- utils/check_php_env_var_changes.php | 1 - utils/php_proxy.sh | 7 +++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/utils/check_php_env_var_changes.php b/utils/check_php_env_var_changes.php index ac1d016a..96249fc1 100644 --- a/utils/check_php_env_var_changes.php +++ b/utils/check_php_env_var_changes.php @@ -28,7 +28,6 @@ $cacheFileContent = ' Date: Mon, 7 Dec 2020 15:15:56 +0100 Subject: [PATCH 18/26] Still debugging --- utils/php_proxy.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/utils/php_proxy.sh b/utils/php_proxy.sh index 36c5777a..a8ae455f 100755 --- a/utils/php_proxy.sh +++ b/utils/php_proxy.sh @@ -1,5 +1,7 @@ #!/bin/bash +sudo chown docker:docker /opt/php_env_var_cache.php + REGENERATE=$(/usr/bin/real_php /usr/local/bin/check_php_env_var_changes.php) echo "REGENERATE = $REGENERATE" From e13a07c7ad41318953503fa6324f542831888941 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 15:22:36 +0100 Subject: [PATCH 19/26] Still debugging --- utils/php_proxy.sh | 3 --- 1 file changed, 3 deletions(-) diff --git a/utils/php_proxy.sh b/utils/php_proxy.sh index a8ae455f..3237a730 100755 --- a/utils/php_proxy.sh +++ b/utils/php_proxy.sh @@ -4,10 +4,7 @@ sudo chown docker:docker /opt/php_env_var_cache.php REGENERATE=$(/usr/bin/real_php /usr/local/bin/check_php_env_var_changes.php) -echo "REGENERATE = $REGENERATE" - if [[ "$REGENERATE" != "0" ]] && [[ "$REGENERATE" != "1" ]]; then - echo "Something wrong happened in the /usr/local/bin/check_php_env_var_changes.php script." exit 1 fi From 046b32ef1ff5f9fcb8c974c8c11db11f901d6c77 Mon Sep 17 00:00:00 2001 From: Julien Neuhart Date: Mon, 7 Dec 2020 15:36:25 +0100 Subject: [PATCH 20/26] Readd other PHP versions --- .github/workflows/workflow.yml | 48 +++++++++++++++++----------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 770e2965..62c2d7cb 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -21,30 +21,30 @@ jobs: php_version: '8.0' - variant: 'fpm' php_version: '8.0' -# - variant: 'cli' -# php_version: '7.4' -# - variant: 'apache' -# php_version: '7.4' -# - variant: 'fpm' -# php_version: '7.4' -# - variant: 'cli' -# php_version: '7.3' -# - variant: 'apache' -# php_version: '7.3' -# - variant: 'fpm' -# php_version: '7.3' -# - variant: 'cli' -# php_version: '7.2' -# - variant: 'apache' -# php_version: '7.2' -# - variant: 'fpm' -# php_version: '7.2' -# - variant: 'cli' -# php_version: '7.1' -# - variant: 'apache' -# php_version: '7.1' -# - variant: 'fpm' -# php_version: '7.1' + - variant: 'cli' + php_version: '7.4' + - variant: 'apache' + php_version: '7.4' + - variant: 'fpm' + php_version: '7.4' + - variant: 'cli' + php_version: '7.3' + - variant: 'apache' + php_version: '7.3' + - variant: 'fpm' + php_version: '7.3' + - variant: 'cli' + php_version: '7.2' + - variant: 'apache' + php_version: '7.2' + - variant: 'fpm' + php_version: '7.2' + - variant: 'cli' + php_version: '7.1' + - variant: 'apache' + php_version: '7.1' + - variant: 'fpm' + php_version: '7.1' runs-on: ubuntu-latest steps: - name: Set up QEMU From f3d7b6a70f8939f580310a6f8bfbde5d8dd7e970 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 17:22:38 +0100 Subject: [PATCH 21/26] Removing "ev" from extensions cause they don't build correctly --- MIGRATING.md | 4 ++-- README.md | 3 ++- extensions/7.1/ev | 1 - extensions/7.2/ev | 1 - extensions/7.3/ev | 1 - extensions/7.4/ev | 1 - utils/README.blueprint.md | 3 ++- 7 files changed, 6 insertions(+), 8 deletions(-) delete mode 120000 extensions/7.1/ev delete mode 120000 extensions/7.2/ev delete mode 120000 extensions/7.3/ev delete mode 120000 extensions/7.4/ev diff --git a/MIGRATING.md b/MIGRATING.md index f9f91e0e..dd93047c 100644 --- a/MIGRATING.md +++ b/MIGRATING.md @@ -3,7 +3,7 @@ Important changes: - v3 images are based on **Ubuntu 18.04**. v4 images are based on **Ubuntu 20.04**. -- Internally, the image will attempt to setup extensions / parameters on container startup (in the image entry point), +- Internally, the image will attempt to set up extensions / parameters on container startup (in the image entry point), but also when PHP is run. This should help alleviate a part of the problems when the entrypoint is overloaded by the user. @@ -12,7 +12,7 @@ Important changes: Important changes: - v2 images are based on a Debian Stretch. v3 images are based on **Ubuntu 18.04**. -- Interally, v3 images are built from the [Ondrej PPA](https://launchpad.net/%7Eondrej/+archive/ubuntu/php/+index?batch=75&memo=75&start=75). +- Internally, v3 images are built from the [Ondrej PPA](https://launchpad.net/%7Eondrej/+archive/ubuntu/php/+index?batch=75&memo=75&start=75). This is a radical change from v2 that was built from the official PHP Docker image. As a result, the v3 image do not have PECL installed, nor a build environment. This makes the v3 images ~200MB lighter. diff --git a/README.md b/README.md index 36eb8beb..12f5008b 100644 --- a/README.md +++ b/README.md @@ -152,7 +152,8 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ +- *ev* is not available in v4 (use v3 for now) +- *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image diff --git a/extensions/7.1/ev b/extensions/7.1/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/7.1/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/extensions/7.2/ev b/extensions/7.2/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/7.2/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/extensions/7.3/ev b/extensions/7.3/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/7.3/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/extensions/7.4/ev b/extensions/7.4/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/7.4/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index d04f49f3..1944eff0 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -107,7 +107,8 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev*, *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ +- *ev* is not available in v4 (use v3 for now) +- *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image From 9869a286b10a46d9ea42fbc90d98d8d472237f22 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 17:28:29 +0100 Subject: [PATCH 22/26] Fixing event build --- extensions/core/event/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/core/event/install.sh b/extensions/core/event/install.sh index dd4f2bde..c7cc9558 100755 --- a/extensions/core/event/install.sh +++ b/extensions/core/event/install.sh @@ -5,6 +5,6 @@ set -e #export EXTENSION="sockets" export PECL_EXTENSION="event" export DEV_DEPENDENCIES="libevent-dev libssl-dev" -export DEPENDENCIES="libevent-2.1-6 libevent-core-2.1-6 libevent-extra-2.1-6 libevent-openssl-2.1-6 libevent-pthreads-2.1-6 libssl1.1" +export DEPENDENCIES="libevent-2.1-7 libevent-core-2.1-7 libevent-extra-2.1-7 libevent-openssl-2.1-7 libevent-pthreads-2.1-7 libssl1.1" ../docker-install.sh From 923f40aecc868fa9e5b1933f8498bd2f6532cd5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 18:39:42 +0100 Subject: [PATCH 23/26] Fixing PHP extensions with php proxy. Removing sybase extension --- README.md | 6 ++---- extensions/7.1/ev | 1 + extensions/7.1/gettext | 1 - extensions/7.1/pdo_dblib | 1 - extensions/7.2/ev | 1 + extensions/7.2/gettext | 1 - extensions/7.2/pdo_dblib | 1 - extensions/7.3/ev | 1 + extensions/7.3/gettext | 1 - extensions/7.3/pdo_dblib | 1 - extensions/7.4/ev | 1 + extensions/7.4/gettext | 1 - extensions/7.4/pdo_dblib | 1 - extensions/8.0/ev | 1 + extensions/8.0/event | 1 + extensions/core/docker-install.sh | 15 ++++++++------- utils/README.blueprint.md | 6 ++---- utils/php_proxy.sh | 2 ++ 18 files changed, 20 insertions(+), 23 deletions(-) create mode 120000 extensions/7.1/ev delete mode 120000 extensions/7.1/gettext delete mode 120000 extensions/7.1/pdo_dblib create mode 120000 extensions/7.2/ev delete mode 120000 extensions/7.2/gettext delete mode 120000 extensions/7.2/pdo_dblib create mode 120000 extensions/7.3/ev delete mode 120000 extensions/7.3/gettext delete mode 120000 extensions/7.3/pdo_dblib create mode 120000 extensions/7.4/ev delete mode 120000 extensions/7.4/gettext delete mode 120000 extensions/7.4/pdo_dblib create mode 120000 extensions/8.0/ev create mode 120000 extensions/8.0/event diff --git a/README.md b/README.md index 12f5008b..b0b82e96 100644 --- a/README.md +++ b/README.md @@ -152,8 +152,8 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev* is not available in v4 (use v3 for now) -- *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ +- *sybase* extension is not available in v4 (use v3) +- *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image @@ -179,8 +179,6 @@ As an alternative, you can use the `PHP_EXTENSIONS` global variable: PHP_EXTENSIONS=pgsql gettext imap ``` -**Note:** Sybase extension is not available on PHP 8. - ### Compiling extensions in the slim image If you are using the slim image, you can automatically compile the extensions using the `PHP_EXTENSIONS` ARG in your Dockerfile. diff --git a/extensions/7.1/ev b/extensions/7.1/ev new file mode 120000 index 00000000..d523a2c1 --- /dev/null +++ b/extensions/7.1/ev @@ -0,0 +1 @@ +../core/ev \ No newline at end of file diff --git a/extensions/7.1/gettext b/extensions/7.1/gettext deleted file mode 120000 index 0369641a..00000000 --- a/extensions/7.1/gettext +++ /dev/null @@ -1 +0,0 @@ -../core/gettext \ No newline at end of file diff --git a/extensions/7.1/pdo_dblib b/extensions/7.1/pdo_dblib deleted file mode 120000 index 2261140c..00000000 --- a/extensions/7.1/pdo_dblib +++ /dev/null @@ -1 +0,0 @@ -../core/pdo_dblib \ No newline at end of file diff --git a/extensions/7.2/ev b/extensions/7.2/ev new file mode 120000 index 00000000..d523a2c1 --- /dev/null +++ b/extensions/7.2/ev @@ -0,0 +1 @@ +../core/ev \ No newline at end of file diff --git a/extensions/7.2/gettext b/extensions/7.2/gettext deleted file mode 120000 index 0369641a..00000000 --- a/extensions/7.2/gettext +++ /dev/null @@ -1 +0,0 @@ -../core/gettext \ No newline at end of file diff --git a/extensions/7.2/pdo_dblib b/extensions/7.2/pdo_dblib deleted file mode 120000 index 2261140c..00000000 --- a/extensions/7.2/pdo_dblib +++ /dev/null @@ -1 +0,0 @@ -../core/pdo_dblib \ No newline at end of file diff --git a/extensions/7.3/ev b/extensions/7.3/ev new file mode 120000 index 00000000..d523a2c1 --- /dev/null +++ b/extensions/7.3/ev @@ -0,0 +1 @@ +../core/ev \ No newline at end of file diff --git a/extensions/7.3/gettext b/extensions/7.3/gettext deleted file mode 120000 index 0369641a..00000000 --- a/extensions/7.3/gettext +++ /dev/null @@ -1 +0,0 @@ -../core/gettext \ No newline at end of file diff --git a/extensions/7.3/pdo_dblib b/extensions/7.3/pdo_dblib deleted file mode 120000 index 2261140c..00000000 --- a/extensions/7.3/pdo_dblib +++ /dev/null @@ -1 +0,0 @@ -../core/pdo_dblib \ No newline at end of file diff --git a/extensions/7.4/ev b/extensions/7.4/ev new file mode 120000 index 00000000..d523a2c1 --- /dev/null +++ b/extensions/7.4/ev @@ -0,0 +1 @@ +../core/ev \ No newline at end of file diff --git a/extensions/7.4/gettext b/extensions/7.4/gettext deleted file mode 120000 index 0369641a..00000000 --- a/extensions/7.4/gettext +++ /dev/null @@ -1 +0,0 @@ -../core/gettext \ No newline at end of file diff --git a/extensions/7.4/pdo_dblib b/extensions/7.4/pdo_dblib deleted file mode 120000 index 2261140c..00000000 --- a/extensions/7.4/pdo_dblib +++ /dev/null @@ -1 +0,0 @@ -../core/pdo_dblib \ No newline at end of file diff --git a/extensions/8.0/ev b/extensions/8.0/ev new file mode 120000 index 00000000..d523a2c1 --- /dev/null +++ b/extensions/8.0/ev @@ -0,0 +1 @@ +../core/ev \ No newline at end of file diff --git a/extensions/8.0/event b/extensions/8.0/event new file mode 120000 index 00000000..67569f41 --- /dev/null +++ b/extensions/8.0/event @@ -0,0 +1 @@ +../core/event \ No newline at end of file diff --git a/extensions/core/docker-install.sh b/extensions/core/docker-install.sh index 102c6ab7..fe52c775 100755 --- a/extensions/core/docker-install.sh +++ b/extensions/core/docker-install.sh @@ -48,9 +48,9 @@ fi if [ -n "$EXTENSION" ]; then # Let's perform a test phpenmod $EXTENSION - php -m | grep "${PHP_EXT_PHP_NAME:-${PHP_EXT_NAME:-$EXTENSION}}" + /usr/bin/real_php -m | grep "${PHP_EXT_PHP_NAME:-${PHP_EXT_NAME:-$EXTENSION}}" # Check that there is no output on STDERR when starting php: - OUTPUT=`php -r "echo '';" 2>&1` + OUTPUT=`/usr/bin/real_php -r "echo '';" 2>&1` [[ "$OUTPUT" == "" ]] # And now, let's disable it! phpdismod $EXTENSION @@ -58,12 +58,13 @@ fi if [ -n "$PECL_EXTENSION" ]; then # Let's perform a test - PHP_EXTENSIONS="${PHP_EXT_NAME:-$PECL_EXTENSION}" php /usr/local/bin/setup_extensions.php | bash - PHP_EXTENSIONS="${PHP_EXT_NAME:-$PECL_EXTENSION}" php /usr/local/bin/generate_conf.php > /etc/php/${PHP_VERSION}/cli/conf.d/testextension.ini - php -m | grep "${PHP_EXT_PHP_NAME:-${PHP_EXT_NAME:-$PECL_EXTENSION}}" + PHP_EXTENSIONS="${PHP_EXT_NAME:-$PECL_EXTENSION}" /usr/bin/real_php /usr/local/bin/setup_extensions.php | bash + PHP_EXTENSIONS="${PHP_EXT_NAME:-$PECL_EXTENSION}" /usr/bin/real_php /usr/local/bin/generate_conf.php > /etc/php/${PHP_VERSION}/cli/conf.d/testextension.ini + + /usr/bin/real_php -m | grep "${PHP_EXT_PHP_NAME:-${PHP_EXT_NAME:-$PECL_EXTENSION}}" # Check that there is no output on STDERR when starting php: - OUTPUT=`php -r "echo '';" 2>&1` + OUTPUT=`/usr/bin/real_php -r "echo '';" 2>&1` [[ "$OUTPUT" == "" ]] - PHP_EXTENSIONS="" php /usr/local/bin/setup_extensions.php | bash + PHP_EXTENSIONS="" /usr/bin/real_php /usr/local/bin/setup_extensions.php | bash rm /etc/php/${PHP_VERSION}/cli/conf.d/testextension.ini fi diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index 1944eff0..f677f43e 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -107,8 +107,8 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) -- *ev* is not available in v4 (use v3 for now) -- *event*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire*, *gettext* are not available in PHP 8.0+ +- *sybase* extension is not available in v4 (use v3) +- *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image @@ -134,8 +134,6 @@ As an alternative, you can use the `PHP_EXTENSIONS` global variable: PHP_EXTENSIONS=pgsql gettext imap ``` -**Note:** Sybase extension is not available on PHP 8. - ### Compiling extensions in the slim image If you are using the slim image, you can automatically compile the extensions using the `PHP_EXTENSIONS` ARG in your Dockerfile. diff --git a/utils/php_proxy.sh b/utils/php_proxy.sh index 3237a730..fd630362 100755 --- a/utils/php_proxy.sh +++ b/utils/php_proxy.sh @@ -1,5 +1,7 @@ #!/bin/bash +#set -e + sudo chown docker:docker /opt/php_env_var_cache.php REGENERATE=$(/usr/bin/real_php /usr/local/bin/check_php_env_var_changes.php) From 5c8ef1c60e972b20a8eafe30fb80d7766efd6426 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 18:46:21 +0100 Subject: [PATCH 24/26] Removing ev from PHP 8 --- README.md | 2 +- extensions/8.0/ev | 1 - utils/README.blueprint.md | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) delete mode 120000 extensions/8.0/ev diff --git a/README.md b/README.md index b0b82e96..3ac21f80 100644 --- a/README.md +++ b/README.md @@ -153,7 +153,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) - *sybase* extension is not available in v4 (use v3) -- *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ +- *ev*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image diff --git a/extensions/8.0/ev b/extensions/8.0/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/8.0/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index f677f43e..f572b26c 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -108,7 +108,7 @@ Below is a list of extensions available in this image: - *mcrypt* is not available anymore in PHP 7.3+ - *weakref* is not compatible with PHP 7.3+ (but weak references were added to the PHP core in PHP 7.4) - *sybase* extension is not available in v4 (use v3) -- *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ +- *ev*, *gnupg*, *mongodb*, *rdkafka*, *swoole*, *uploadprogress*, *xmlrpc*, *blackfire* are not available in PHP 8.0+ ### Enabling/disabling extensions in the fat image From 1f30feaafb65db299a592c18aff77232c837b139 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 19:35:24 +0100 Subject: [PATCH 25/26] Fixing double call to setup_extensions --- utils/docker-entrypoint-as-root.sh | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/utils/docker-entrypoint-as-root.sh b/utils/docker-entrypoint-as-root.sh index 4b6ace36..960e9eb8 100755 --- a/utils/docker-entrypoint-as-root.sh +++ b/utils/docker-entrypoint-as-root.sh @@ -116,12 +116,15 @@ fi unset DOCKER_FOR_MAC_REMOTE_HOST unset REMOTE_HOST_FOUND -php /usr/local/bin/generate_conf.php > /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini -php /usr/local/bin/setup_extensions.php | sudo bash +sudo chown docker:docker /opt/php_env_var_cache.php +/usr/bin/real_php /usr/local/bin/check_php_env_var_changes.php &> /dev/null + +/usr/bin/real_php /usr/local/bin/generate_conf.php > /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini +/usr/bin/real_php /usr/local/bin/setup_extensions.php | sudo bash # output on the logs can be done by writing on the "tini" PID. Useful for CRONTAB TINI_PID=`ps -e | grep tini | awk '{print $1;}'` -php /usr/local/bin/generate_cron.php $TINI_PID > /tmp/generated_crontab +/usr/bin/real_php /usr/local/bin/generate_cron.php $TINI_PID > /tmp/generated_crontab chmod 0644 /tmp/generated_crontab # If generated_crontab is not empty, start supercronic @@ -130,13 +133,13 @@ if [[ -s /tmp/generated_crontab ]]; then fi if [[ "$IMAGE_VARIANT" == "apache" ]]; then - php /usr/local/bin/enable_apache_mods.php | bash + /usr/bin/real_php /usr/local/bin/enable_apache_mods.php | bash fi if [ -e /etc/container/startup.sh ]; then sudo -E -u "#$DOCKER_USER_ID" /etc/container/startup.sh fi -sudo -E -u "#$DOCKER_USER_ID" sh -c "php /usr/local/bin/startup_commands.php | bash" +sudo -E -u "#$DOCKER_USER_ID" sh -c "/usr/bin/real_php /usr/local/bin/startup_commands.php | bash" if [[ "$APACHE_DOCUMENT_ROOT" == /* ]]; then export ABSOLUTE_APACHE_DOCUMENT_ROOT="$APACHE_DOCUMENT_ROOT" From bc65bd2c1e70cb407a5e004bcef913d4aaa59a06 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20N=C3=A9grier?= Date: Mon, 7 Dec 2020 19:52:14 +0100 Subject: [PATCH 26/26] Dropping support for PHP 7.1 --- .github/workflows/workflow.yml | 57 ++++++++++++++++---------------- CHANGELOG.md | 1 + Dockerfile.slim.fpm | 2 +- README.md | 30 ++++++++--------- extensions/7.1/amqp | 1 - extensions/7.1/apcu | 1 - extensions/7.1/ast | 1 - extensions/7.1/bcmath | 1 - extensions/7.1/blackfire | 1 - extensions/7.1/bz2 | 1 - extensions/7.1/dba | 1 - extensions/7.1/disable_all.sh | 1 - extensions/7.1/docker-install.sh | 1 - extensions/7.1/ds | 1 - extensions/7.1/enchant | 1 - extensions/7.1/ev | 1 - extensions/7.1/event | 1 - extensions/7.1/gd | 1 - extensions/7.1/gmp | 1 - extensions/7.1/gnupg | 1 - extensions/7.1/igbinary | 1 - extensions/7.1/imagick | 1 - extensions/7.1/imap | 1 - extensions/7.1/install_all.sh | 1 - extensions/7.1/intl | 1 - extensions/7.1/ldap | 1 - extensions/7.1/mailparse | 1 - extensions/7.1/mcrypt | 1 - extensions/7.1/memcached | 1 - extensions/7.1/mongodb | 1 - extensions/7.1/msgpack | 1 - extensions/7.1/mysqli | 1 - extensions/7.1/pcov | 1 - extensions/7.1/pdo_mysql | 1 - extensions/7.1/pdo_pgsql | 1 - extensions/7.1/pdo_sqlite | 1 - extensions/7.1/pgsql | 1 - extensions/7.1/pspell | 1 - extensions/7.1/rdkafka | 1 - extensions/7.1/redis | 1 - extensions/7.1/snmp | 1 - extensions/7.1/soap | 1 - extensions/7.1/sqlite3 | 1 - extensions/7.1/swoole | 1 - extensions/7.1/tidy | 1 - extensions/7.1/uploadprogress | 1 - extensions/7.1/uuid | 1 - extensions/7.1/weakref | 1 - extensions/7.1/xdebug | 1 - extensions/7.1/xmlrpc | 1 - extensions/7.1/yaml | 1 - utils/Dockerfile.slim.blueprint | 2 +- utils/README.blueprint.md | 2 +- 53 files changed, 48 insertions(+), 93 deletions(-) delete mode 120000 extensions/7.1/amqp delete mode 120000 extensions/7.1/apcu delete mode 120000 extensions/7.1/ast delete mode 120000 extensions/7.1/bcmath delete mode 120000 extensions/7.1/blackfire delete mode 120000 extensions/7.1/bz2 delete mode 120000 extensions/7.1/dba delete mode 120000 extensions/7.1/disable_all.sh delete mode 120000 extensions/7.1/docker-install.sh delete mode 120000 extensions/7.1/ds delete mode 120000 extensions/7.1/enchant delete mode 120000 extensions/7.1/ev delete mode 120000 extensions/7.1/event delete mode 120000 extensions/7.1/gd delete mode 120000 extensions/7.1/gmp delete mode 120000 extensions/7.1/gnupg delete mode 120000 extensions/7.1/igbinary delete mode 120000 extensions/7.1/imagick delete mode 120000 extensions/7.1/imap delete mode 120000 extensions/7.1/install_all.sh delete mode 120000 extensions/7.1/intl delete mode 120000 extensions/7.1/ldap delete mode 120000 extensions/7.1/mailparse delete mode 120000 extensions/7.1/mcrypt delete mode 120000 extensions/7.1/memcached delete mode 120000 extensions/7.1/mongodb delete mode 120000 extensions/7.1/msgpack delete mode 120000 extensions/7.1/mysqli delete mode 120000 extensions/7.1/pcov delete mode 120000 extensions/7.1/pdo_mysql delete mode 120000 extensions/7.1/pdo_pgsql delete mode 120000 extensions/7.1/pdo_sqlite delete mode 120000 extensions/7.1/pgsql delete mode 120000 extensions/7.1/pspell delete mode 120000 extensions/7.1/rdkafka delete mode 120000 extensions/7.1/redis delete mode 120000 extensions/7.1/snmp delete mode 120000 extensions/7.1/soap delete mode 120000 extensions/7.1/sqlite3 delete mode 120000 extensions/7.1/swoole delete mode 120000 extensions/7.1/tidy delete mode 120000 extensions/7.1/uploadprogress delete mode 120000 extensions/7.1/uuid delete mode 120000 extensions/7.1/weakref delete mode 120000 extensions/7.1/xdebug delete mode 120000 extensions/7.1/xmlrpc delete mode 120000 extensions/7.1/yaml diff --git a/.github/workflows/workflow.yml b/.github/workflows/workflow.yml index 2af077ce..ecd005ee 100644 --- a/.github/workflows/workflow.yml +++ b/.github/workflows/workflow.yml @@ -3,12 +3,12 @@ name: Docker PHP Images GitHub workflow on: pull_request: branches: - - 'v4-dev' + - 'v4' push: branches: - - 'v4-dev' -# schedule: -# - cron: '0 0 * * 0' + - 'v4' + schedule: + - cron: '42 3 * * 0' jobs: build_test_maybe_release: @@ -39,12 +39,6 @@ jobs: php_version: '7.2' - variant: 'fpm' php_version: '7.2' - - variant: 'cli' - php_version: '7.1' - - variant: 'apache' - php_version: '7.1' - - variant: 'fpm' - php_version: '7.1' runs-on: ubuntu-latest steps: - name: Set up QEMU @@ -54,22 +48,29 @@ jobs: - uses: actions/checkout@v1 - name: Build and test run: | - PHP_VERSION="${{ matrix.php_version }}" BRANCH="v4-dev" VARIANT="${{ matrix.variant }}" ./build-and-test.sh + PHP_VERSION="${{ matrix.php_version }}" BRANCH="v4" VARIANT="${{ matrix.variant }}" ./build-and-test.sh docker images | grep thecodingmachine/php -# - name: Login to DockerHub -# # Merge ~ push. -# if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} -# uses: docker/login-action@v1 -# with: -# username: ${{ secrets.DOCKERHUB_USERNAME }} -# password: ${{ secrets.DOCKERHUB_TOKEN }} -# - name: Release -# # Merge ~ push. -# if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} -# run: | -# BRANCH_VARIANT=`echo "${{ matrix.variant }}" | sed 's/\./-/g'` -# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-slim-${BRANCH_VARIANT} -# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT} -# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node8 -# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node10 -# docker push thecodingmachine/php:${{ matrix.php_version }}-v3-${BRANCH_VARIANT}-node12 + - name: Login to DockerHub + # Merge ~ push. + if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + - name: Release + # Merge ~ push. + if: ${{ github.event_name == 'push' || github.event_name == 'schedule' }} + run: | + BRANCH_VARIANT=`echo "${{ matrix.variant }}" | sed 's/\./-/g'` + docker push thecodingmachine/php:${{ matrix.php_version }}-v4-slim-${BRANCH_VARIANT} + docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT} + docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node8 + docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node10 + docker push thecodingmachine/php:${{ matrix.php_version }}-v4-${BRANCH_VARIANT}-node12 + # Let's also tag PHP patch releases + PHP_PATCH_VERSION=`docker run --rm thecodingmachine/php:${{ matrix.php_version }}-v4-slim-${BRANCH_VARIANT} php -v | head -n1 | grep -P '\d+\.\d+\.\d+' -o` + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-v4-slim-${BRANCH_VARIANT} thecodingmachine/php:${PHP_VERSION}-v4-slim-${BRANCH_VARIANT} + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT} thecodingmachine/php:${PHP_VERSION}-v4-${BRANCH_VARIANT} + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node10 thecodingmachine/php:${PHP_VERSION}-v4-${BRANCH_VARIANT}-node10 + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node12 thecodingmachine/php:${PHP_VERSION}-v4-${BRANCH_VARIANT}-node12 + docker push -t thecodingmachine/php:${PHP_PATCH_VERSION}-v4-${BRANCH_VARIANT}-node14 thecodingmachine/php:${PHP_VERSION}-v4-${BRANCH_VARIANT}-node14 diff --git a/CHANGELOG.md b/CHANGELOG.md index 4abe8ed0..bcfbe7ef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ - Base image is Ubuntu 20.04 - Dropped Node 8 images +- Dropped PHP 7.1 # v3 diff --git a/Dockerfile.slim.fpm b/Dockerfile.slim.fpm index 09135476..53f7cee6 100644 --- a/Dockerfile.slim.fpm +++ b/Dockerfile.slim.fpm @@ -252,7 +252,7 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P sed -i 's/^group = www-data/;group = www-data/g' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf && \ sed -i 's#listen = /run/php/php${PHP_VERSION}-fpm.sock#;listen = /run/php/php${PHP_VERSION}-fpm.sock#g' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf && \ sed -i "s#pid = /run/php/php${PHP_VERSION}-fpm.pid#;pid = /run/php/php${PHP_VERSION}-fpm.pid#g" /etc/php/${PHP_VERSION}/fpm/php-fpm.conf && \ - if [ "$PHP_VERSION" = "7.1" ] || [ "$PHP_VERSION" = "7.2" ]; then \ + if [ "$PHP_VERSION" = "7.2" ]; then \ sed -i 's/^log_limit =/;log_limit =/g' /etc/php/${PHP_VERSION}/fpm/pool.d/docker.conf && \ sed -i 's/^decorate_workers_output =/;decorate_workers_output =/g' /etc/php/${PHP_VERSION}/fpm/pool.d/docker.conf; \ fi diff --git a/README.md b/README.md index cfc63fcf..6535004d 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,21 @@ This repository contains a set of developer-friendly, general purpose PHP images | Name | PHP version | type |variant | NodeJS version | Size |-------------------------------------------------------------------------|------------------------------|------|--------|-----------------|------ +| [thecodingmachine/php:8.0-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `8.0.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-apache) +| [thecodingmachine/php:8.0-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `8.0.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-apache-node10) +| [thecodingmachine/php:8.0-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `8.0.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-apache-node12) +| [thecodingmachine/php:8.0-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `8.0.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-apache-node14) +| [thecodingmachine/php:8.0-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `8.0.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-fpm) +| [thecodingmachine/php:8.0-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `8.0.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-fpm-node10) +| [thecodingmachine/php:8.0-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `8.0.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-fpm-node12) +| [thecodingmachine/php:8.0-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `8.0.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-fpm-node14) +| [thecodingmachine/php:8.0-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `8.0.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-cli) +| [thecodingmachine/php:8.0-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `8.0.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-cli-node10) +| [thecodingmachine/php:8.0-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `8.0.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-cli-node12) +| [thecodingmachine/php:8.0-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `8.0.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-cli-node14) +| [thecodingmachine/php:8.0-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `8.0.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-slim-apache) +| [thecodingmachine/php:8.0-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `8.0.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-slim-fpm) +| [thecodingmachine/php:8.0-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `8.0.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:8.0-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:8.0-v4-slim-cli) | [thecodingmachine/php:7.4-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.4.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache) | [thecodingmachine/php:7.4-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.4.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache-node10) | [thecodingmachine/php:7.4-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.4.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.4-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.4-v4-apache-node12) @@ -65,21 +80,6 @@ This repository contains a set of developer-friendly, general purpose PHP images | [thecodingmachine/php:7.2-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.2.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-apache) | [thecodingmachine/php:7.2-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.2.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-fpm) | [thecodingmachine/php:7.2-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.2.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.2-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.2-v4-slim-cli) -| [thecodingmachine/php:7.1-v4-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache) | `7.1.x` | fat | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache) -| [thecodingmachine/php:7.1-v4-apache-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node10) | `7.1.x` | fat | apache | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node10) -| [thecodingmachine/php:7.1-v4-apache-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node12) | `7.1.x` | fat | apache | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node12) -| [thecodingmachine/php:7.1-v4-apache-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.apache.node14) | `7.1.x` | fat | apache | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-apache-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-apache-node14) -| [thecodingmachine/php:7.1-v4-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm) | `7.1.x` | fat | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm) -| [thecodingmachine/php:7.1-v4-fpm-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node10) | `7.1.x` | fat | fpm | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node10) -| [thecodingmachine/php:7.1-v4-fpm-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node12) | `7.1.x` | fat | fpm | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node12) -| [thecodingmachine/php:7.1-v4-fpm-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.fpm.node14) | `7.1.x` | fat | fpm | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-fpm-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-fpm-node14) -| [thecodingmachine/php:7.1-v4-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli) | `7.1.x` | fat | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli) -| [thecodingmachine/php:7.1-v4-cli-node10](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node10) | `7.1.x` | fat | cli | `10.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node10.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node10) -| [thecodingmachine/php:7.1-v4-cli-node12](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node12) | `7.1.x` | fat | cli | `12.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node12.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node12) -| [thecodingmachine/php:7.1-v4-cli-node14](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.cli.node14) | `7.1.x` | fat | cli | `8.x` | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-cli-node14.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-cli-node14) -| [thecodingmachine/php:7.1-v4-slim-apache](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.apache) | `7.1.x` | slim | apache | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-apache.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-apache) -| [thecodingmachine/php:7.1-v4-slim-fpm](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.fpm) | `7.1.x` | slim | fpm | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-fpm.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-fpm) -| [thecodingmachine/php:7.1-v4-slim-cli](https://github.com/thecodingmachine/docker-images-php/blob/v4/Dockerfile.slim.cli) | `7.1.x` | slim | cli | *N/A* | [![](https://images.microbadger.com/badges/image/thecodingmachine/php:7.1-v4-slim-cli.svg)](https://microbadger.com/images/thecodingmachine/php:7.1-v4-slim-cli) diff --git a/extensions/7.1/amqp b/extensions/7.1/amqp deleted file mode 120000 index f66005fc..00000000 --- a/extensions/7.1/amqp +++ /dev/null @@ -1 +0,0 @@ -../core/amqp \ No newline at end of file diff --git a/extensions/7.1/apcu b/extensions/7.1/apcu deleted file mode 120000 index ddbb93d6..00000000 --- a/extensions/7.1/apcu +++ /dev/null @@ -1 +0,0 @@ -../core/apcu \ No newline at end of file diff --git a/extensions/7.1/ast b/extensions/7.1/ast deleted file mode 120000 index 5241c003..00000000 --- a/extensions/7.1/ast +++ /dev/null @@ -1 +0,0 @@ -../core/ast \ No newline at end of file diff --git a/extensions/7.1/bcmath b/extensions/7.1/bcmath deleted file mode 120000 index 36953ef1..00000000 --- a/extensions/7.1/bcmath +++ /dev/null @@ -1 +0,0 @@ -../core/bcmath \ No newline at end of file diff --git a/extensions/7.1/blackfire b/extensions/7.1/blackfire deleted file mode 120000 index 1179c0b9..00000000 --- a/extensions/7.1/blackfire +++ /dev/null @@ -1 +0,0 @@ -../core/blackfire \ No newline at end of file diff --git a/extensions/7.1/bz2 b/extensions/7.1/bz2 deleted file mode 120000 index 34eaa01d..00000000 --- a/extensions/7.1/bz2 +++ /dev/null @@ -1 +0,0 @@ -../core/bz2 \ No newline at end of file diff --git a/extensions/7.1/dba b/extensions/7.1/dba deleted file mode 120000 index f9598d4d..00000000 --- a/extensions/7.1/dba +++ /dev/null @@ -1 +0,0 @@ -../core/dba \ No newline at end of file diff --git a/extensions/7.1/disable_all.sh b/extensions/7.1/disable_all.sh deleted file mode 120000 index 36f58a80..00000000 --- a/extensions/7.1/disable_all.sh +++ /dev/null @@ -1 +0,0 @@ -../core/disable_all.sh \ No newline at end of file diff --git a/extensions/7.1/docker-install.sh b/extensions/7.1/docker-install.sh deleted file mode 120000 index 245891f8..00000000 --- a/extensions/7.1/docker-install.sh +++ /dev/null @@ -1 +0,0 @@ -../core/docker-install.sh \ No newline at end of file diff --git a/extensions/7.1/ds b/extensions/7.1/ds deleted file mode 120000 index edbe1af6..00000000 --- a/extensions/7.1/ds +++ /dev/null @@ -1 +0,0 @@ -../core/ds \ No newline at end of file diff --git a/extensions/7.1/enchant b/extensions/7.1/enchant deleted file mode 120000 index aa197129..00000000 --- a/extensions/7.1/enchant +++ /dev/null @@ -1 +0,0 @@ -../core/enchant \ No newline at end of file diff --git a/extensions/7.1/ev b/extensions/7.1/ev deleted file mode 120000 index d523a2c1..00000000 --- a/extensions/7.1/ev +++ /dev/null @@ -1 +0,0 @@ -../core/ev \ No newline at end of file diff --git a/extensions/7.1/event b/extensions/7.1/event deleted file mode 120000 index 67569f41..00000000 --- a/extensions/7.1/event +++ /dev/null @@ -1 +0,0 @@ -../core/event \ No newline at end of file diff --git a/extensions/7.1/gd b/extensions/7.1/gd deleted file mode 120000 index c4cfd1f9..00000000 --- a/extensions/7.1/gd +++ /dev/null @@ -1 +0,0 @@ -../core/gd \ No newline at end of file diff --git a/extensions/7.1/gmp b/extensions/7.1/gmp deleted file mode 120000 index d3dce5ec..00000000 --- a/extensions/7.1/gmp +++ /dev/null @@ -1 +0,0 @@ -../core/gmp \ No newline at end of file diff --git a/extensions/7.1/gnupg b/extensions/7.1/gnupg deleted file mode 120000 index 002cc7b2..00000000 --- a/extensions/7.1/gnupg +++ /dev/null @@ -1 +0,0 @@ -../core/gnupg \ No newline at end of file diff --git a/extensions/7.1/igbinary b/extensions/7.1/igbinary deleted file mode 120000 index c57a5ab9..00000000 --- a/extensions/7.1/igbinary +++ /dev/null @@ -1 +0,0 @@ -../core/igbinary \ No newline at end of file diff --git a/extensions/7.1/imagick b/extensions/7.1/imagick deleted file mode 120000 index 308094fe..00000000 --- a/extensions/7.1/imagick +++ /dev/null @@ -1 +0,0 @@ -../core/imagick/ \ No newline at end of file diff --git a/extensions/7.1/imap b/extensions/7.1/imap deleted file mode 120000 index 4ee55a28..00000000 --- a/extensions/7.1/imap +++ /dev/null @@ -1 +0,0 @@ -../core/imap \ No newline at end of file diff --git a/extensions/7.1/install_all.sh b/extensions/7.1/install_all.sh deleted file mode 120000 index 615edbef..00000000 --- a/extensions/7.1/install_all.sh +++ /dev/null @@ -1 +0,0 @@ -../core/install_all.sh \ No newline at end of file diff --git a/extensions/7.1/intl b/extensions/7.1/intl deleted file mode 120000 index dd21da0b..00000000 --- a/extensions/7.1/intl +++ /dev/null @@ -1 +0,0 @@ -../core/intl \ No newline at end of file diff --git a/extensions/7.1/ldap b/extensions/7.1/ldap deleted file mode 120000 index 394c7519..00000000 --- a/extensions/7.1/ldap +++ /dev/null @@ -1 +0,0 @@ -../core/ldap \ No newline at end of file diff --git a/extensions/7.1/mailparse b/extensions/7.1/mailparse deleted file mode 120000 index e29c74c5..00000000 --- a/extensions/7.1/mailparse +++ /dev/null @@ -1 +0,0 @@ -../core/mailparse \ No newline at end of file diff --git a/extensions/7.1/mcrypt b/extensions/7.1/mcrypt deleted file mode 120000 index 73504723..00000000 --- a/extensions/7.1/mcrypt +++ /dev/null @@ -1 +0,0 @@ -../core/mcrypt-7.1/ \ No newline at end of file diff --git a/extensions/7.1/memcached b/extensions/7.1/memcached deleted file mode 120000 index 13f2ea8c..00000000 --- a/extensions/7.1/memcached +++ /dev/null @@ -1 +0,0 @@ -../core/memcached \ No newline at end of file diff --git a/extensions/7.1/mongodb b/extensions/7.1/mongodb deleted file mode 120000 index 7898c8e7..00000000 --- a/extensions/7.1/mongodb +++ /dev/null @@ -1 +0,0 @@ -../core/mongodb \ No newline at end of file diff --git a/extensions/7.1/msgpack b/extensions/7.1/msgpack deleted file mode 120000 index 2a72eaa8..00000000 --- a/extensions/7.1/msgpack +++ /dev/null @@ -1 +0,0 @@ -../core/msgpack \ No newline at end of file diff --git a/extensions/7.1/mysqli b/extensions/7.1/mysqli deleted file mode 120000 index f752c283..00000000 --- a/extensions/7.1/mysqli +++ /dev/null @@ -1 +0,0 @@ -../core/mysqli \ No newline at end of file diff --git a/extensions/7.1/pcov b/extensions/7.1/pcov deleted file mode 120000 index b99a0dd2..00000000 --- a/extensions/7.1/pcov +++ /dev/null @@ -1 +0,0 @@ -../core/pcov \ No newline at end of file diff --git a/extensions/7.1/pdo_mysql b/extensions/7.1/pdo_mysql deleted file mode 120000 index f752c283..00000000 --- a/extensions/7.1/pdo_mysql +++ /dev/null @@ -1 +0,0 @@ -../core/mysqli \ No newline at end of file diff --git a/extensions/7.1/pdo_pgsql b/extensions/7.1/pdo_pgsql deleted file mode 120000 index 29ac8e8b..00000000 --- a/extensions/7.1/pdo_pgsql +++ /dev/null @@ -1 +0,0 @@ -../core/pgsql \ No newline at end of file diff --git a/extensions/7.1/pdo_sqlite b/extensions/7.1/pdo_sqlite deleted file mode 120000 index 45ffc754..00000000 --- a/extensions/7.1/pdo_sqlite +++ /dev/null @@ -1 +0,0 @@ -../core/sqlite3 \ No newline at end of file diff --git a/extensions/7.1/pgsql b/extensions/7.1/pgsql deleted file mode 120000 index 29ac8e8b..00000000 --- a/extensions/7.1/pgsql +++ /dev/null @@ -1 +0,0 @@ -../core/pgsql \ No newline at end of file diff --git a/extensions/7.1/pspell b/extensions/7.1/pspell deleted file mode 120000 index 9be96fd9..00000000 --- a/extensions/7.1/pspell +++ /dev/null @@ -1 +0,0 @@ -../core/pspell \ No newline at end of file diff --git a/extensions/7.1/rdkafka b/extensions/7.1/rdkafka deleted file mode 120000 index 8fce5d9f..00000000 --- a/extensions/7.1/rdkafka +++ /dev/null @@ -1 +0,0 @@ -../core/rdkafka/ \ No newline at end of file diff --git a/extensions/7.1/redis b/extensions/7.1/redis deleted file mode 120000 index 0727c021..00000000 --- a/extensions/7.1/redis +++ /dev/null @@ -1 +0,0 @@ -../core/redis \ No newline at end of file diff --git a/extensions/7.1/snmp b/extensions/7.1/snmp deleted file mode 120000 index f2249ffe..00000000 --- a/extensions/7.1/snmp +++ /dev/null @@ -1 +0,0 @@ -../core/snmp \ No newline at end of file diff --git a/extensions/7.1/soap b/extensions/7.1/soap deleted file mode 120000 index ea63abf6..00000000 --- a/extensions/7.1/soap +++ /dev/null @@ -1 +0,0 @@ -../core/soap \ No newline at end of file diff --git a/extensions/7.1/sqlite3 b/extensions/7.1/sqlite3 deleted file mode 120000 index abddf395..00000000 --- a/extensions/7.1/sqlite3 +++ /dev/null @@ -1 +0,0 @@ -../core/sqlite3/ \ No newline at end of file diff --git a/extensions/7.1/swoole b/extensions/7.1/swoole deleted file mode 120000 index f20d56ed..00000000 --- a/extensions/7.1/swoole +++ /dev/null @@ -1 +0,0 @@ -../core/swoole \ No newline at end of file diff --git a/extensions/7.1/tidy b/extensions/7.1/tidy deleted file mode 120000 index e0434e64..00000000 --- a/extensions/7.1/tidy +++ /dev/null @@ -1 +0,0 @@ -../core/tidy \ No newline at end of file diff --git a/extensions/7.1/uploadprogress b/extensions/7.1/uploadprogress deleted file mode 120000 index b18aa3c5..00000000 --- a/extensions/7.1/uploadprogress +++ /dev/null @@ -1 +0,0 @@ -../core/uploadprogress/ \ No newline at end of file diff --git a/extensions/7.1/uuid b/extensions/7.1/uuid deleted file mode 120000 index 2e96802e..00000000 --- a/extensions/7.1/uuid +++ /dev/null @@ -1 +0,0 @@ -../core/uuid/ \ No newline at end of file diff --git a/extensions/7.1/weakref b/extensions/7.1/weakref deleted file mode 120000 index 172cf7e0..00000000 --- a/extensions/7.1/weakref +++ /dev/null @@ -1 +0,0 @@ -../core/weakref \ No newline at end of file diff --git a/extensions/7.1/xdebug b/extensions/7.1/xdebug deleted file mode 120000 index 2ee34925..00000000 --- a/extensions/7.1/xdebug +++ /dev/null @@ -1 +0,0 @@ -../core/xdebug \ No newline at end of file diff --git a/extensions/7.1/xmlrpc b/extensions/7.1/xmlrpc deleted file mode 120000 index 2833c799..00000000 --- a/extensions/7.1/xmlrpc +++ /dev/null @@ -1 +0,0 @@ -../core/xmlrpc \ No newline at end of file diff --git a/extensions/7.1/yaml b/extensions/7.1/yaml deleted file mode 120000 index 4be2658a..00000000 --- a/extensions/7.1/yaml +++ /dev/null @@ -1 +0,0 @@ -../core/yaml \ No newline at end of file diff --git a/utils/Dockerfile.slim.blueprint b/utils/Dockerfile.slim.blueprint index a41fbfba..702dcad5 100644 --- a/utils/Dockerfile.slim.blueprint +++ b/utils/Dockerfile.slim.blueprint @@ -356,7 +356,7 @@ RUN ln -s /etc/php/${PHP_VERSION}/mods-available/generated_conf.ini /etc/php/${P sed -i 's/^group = www-data/;group = www-data/g' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf && \ sed -i 's#listen = /run/php/php${PHP_VERSION}-fpm.sock#;listen = /run/php/php${PHP_VERSION}-fpm.sock#g' /etc/php/${PHP_VERSION}/fpm/pool.d/www.conf && \ sed -i "s#pid = /run/php/php${PHP_VERSION}-fpm.pid#;pid = /run/php/php${PHP_VERSION}-fpm.pid#g" /etc/php/${PHP_VERSION}/fpm/php-fpm.conf && \ - if [ "$PHP_VERSION" = "7.1" ] || [ "$PHP_VERSION" = "7.2" ]; then \ + if [ "$PHP_VERSION" = "7.2" ]; then \ sed -i 's/^log_limit =/;log_limit =/g' /etc/php/${PHP_VERSION}/fpm/pool.d/docker.conf && \ sed -i 's/^decorate_workers_output =/;decorate_workers_output =/g' /etc/php/${PHP_VERSION}/fpm/pool.d/docker.conf; \ fi diff --git a/utils/README.blueprint.md b/utils/README.blueprint.md index f761da7a..84ca3fe6 100644 --- a/utils/README.blueprint.md +++ b/utils/README.blueprint.md @@ -16,7 +16,7 @@ This repository contains a set of developer-friendly, general purpose PHP images {{ $image := .Orbit.Images }} ## Images -{{ $versions := list "7.4" "7.3" "7.2" "7.1" }} +{{ $versions := list "8.0" "7.4" "7.3" "7.2" }} | Name | PHP version | type |variant | NodeJS version | Size |-------------------------------------------------------------------------|------------------------------|------|--------|-----------------|------