PHP 7.0 Docker image

This container image includes PHP 7.0 as a S2I base image for your PHP 7.0 applications. Users can choose between RHEL and CentOS based builder images. The RHEL image is available in the Red Hat Container Catalog as registry.access.redhat.com/rhscl/php-70-rhel7. The CentOS image is then available on Docker Hub as centos/php-70-centos7. The resulting image can be run using Docker.

Description

PHP 7.0 available as docker container is a base platform for building and running various PHP 7.0 applications and frameworks. PHP is an HTML-embedded scripting language. PHP attempts to make it easy for developers to write dynamically generated web pages. PHP also offers built-in database integration for several commercial and non-commercial database management systems, so writing a database-enabled webpage with PHP is fairly simple. The most common use of PHP coding is probably as a replacement for CGI scripts.

Usage

To build a simple php-test-app application using standalone S2I and then run the resulting image with Docker execute:

Accessing the application:

$ curl 127.0.0.1:8080

Environment variables

To set these environment variables, you can place them as a key value pair into a .s2i/environment file inside your source code repository.

The following environment variables set their equivalent property value in the php.ini file:

The following environment variables set their equivalent property value in the opcache.ini file:

You can also override the entire directory used to load the PHP configuration by setting:

You can override the Apache MPM prefork settings to increase the performance for of the PHP application. In case you set the Cgroup limits in Docker, the image will attempt to automatically set the optimal values. You can override this at any time by specifying the values yourself:

Source repository layout

You do not need to change anything in your existing PHP project’s repository. However, if these files exist they will affect the behavior of the build process:

Hot deploy

In order to immediately pick up changes made in your application source code, you need to run your built image with the OPCACHE_REVALIDATE_FREQ=0 environment variable passed to the Docker -e run flag:

$ docker run -e OPCACHE_REVALIDATE_FREQ=0 -p 8080:8080 php-app

To change your source code in running container, use Docker’s exec command:

docker exec -it <CONTAINER_ID> /bin/bash

After you Docker exec into the running container, your current directory is set to /opt/app-root/src, where the source code is located.

See also

Dockerfile and other sources are available on https://github.com/sclorg/s2i-php-container. In that repository you also can find another versions of PHP environment Dockerfiles. Dockerfile for CentOS is called Dockerfile, Dockerfile for RHEL is called Dockerfile.rhel7.