Skip to main content

PHP "*-fpm" Images

The "*-fpm" Images

The FPM images extends the "*-base" Image and have installed the modules PHP-FPM.

This image exposes the port:

  • 9000 for the FPM

PHP "*-fpm-nginx" Images

The FPM-NGINX images extends "*-fpm" and "*-base" images and have also a full-featured LEMP Server: PHP + NGINX 1.12.x (without mysql bundled).

This image exposes the ports:

  • 80
  • 443

The home directory is defined by the NGINX_ROOT environment variable. If not set defaults to /var/www/html.

Basically to start type:

docker run -v $PWD:/var/www/html -p 80:80 byjg/php:8.0-fpm-nginx

By default, the nginx serves all files in /var/www/html.

You can set your own NGINX configurations by attaching a volume to:

  • /etc/nginx/nginx.conf
  • /etc/nginx/http.d/ # Vhosts
  • /etc/nginx/conf.d/ # Root level configuration

Setting PHP Controller

You can define a PHP Controller which is a single PHP file that will process all request. This could be useful for REST Applications like Silex, Lumen, Symfony, etc.

docker run -e PHP_CONTROLLER="/index.php" byjg/php:8.0-fpm-nginx

Setting SSL Certificate

docker run -e NGINX_SSL_CERT=/opt/my.cert NGINX_SSL_CERT_KEY=/opt/my.key byjg/php:8.0-fpm-nginx

Setting the NGINX Root

You can set the NGINX Root directory by setting the environment variable NGINX_ROOT. This is useful when you want to serve files from a different directory.

docker run -e NGINX_ROOT=/srv -v $PWD:/srv -p 80:80 byjg/php:8.0-fpm-nginx

Setting the NGINX FastCGI

You can set the NGINX FastCGI by setting the environment variable PHP_FPM_SERVER. This is useful when you want to change the FPM port.

docker run -e PHP_FPM_SERVER=127.0.0.1:9000 byjg/php:8.0-fpm-nginx

PHP "*-nginx" Images

The NGINX images has only the NGINX server installed, and it is configured to connect to a PHP-FPM server.

See the fpm-nginx image for more details.

PHP "*-fpm-apache" Images

The FPM-APACHE images extends "*-fpm" and "*-base" images and have also a full-featured LAMP Server: PHP + APACHE 2.4.x (without mysql bundled).

This image exposes the ports:

  • 80
  • 443

The home directory is in /srv.

Basically to start type:

docker run -v $PWD:/srv -p 80:80 byjg/php:8.0-fpm-apache

By default, the nginx serves all files in /srv.

You can set your own APACHE configurations by attaching a volume to:

  • /etc/apache2/httpd.conf
  • /etc/apache2/conf.d/