Docker Hub: https://hub.docker.com/r/edyan/php Github Containers Registry: https://ghcr.io/edyan/php-fpm
Docker containers to expose PHP FPM with a specific version of PHP (5.3 -> 8.2) installed with then main PHP extensions (curl, pdo, gd, etc ....) as well as XDebug.
It's mainly made for development purposes but can also be used as Production.
The aim of these containers is to be used with docker-compose and especially with our Stakkr Tool.
Why using Debian / Ubuntu and not the official PHP images? Because a lot of hosts are based on Debian or Ubuntu, so it's to have in development the same environment than in dev
We try to use, as much as possible, distros officials PHP versions to avoid extra repositories.
Why iptables? Because stakkr blocks SMTP ports to avoid a lot of emails to be send during developments and by mistake
Add the following to your docker-compose.yml file:
php:
image: edyan/php:8.0
environment:
FPM_UID: 1000
FPM_GID: 1000
PHP_ENABLED_MODULES: "curl sqlite3"
Two variables have been created (FPM_UID
and FPM_GID
) to override the www-data user and group ids.
Giving the current user login / pass that runs the container, it will allow anybody to own the files
read / written by the fpm daemon (started by www-data).
Another variable will activate / deactivate development modules: ENVIRONMENT
.
Set to dev
it'll change max_execution_time
to -1
and display_errors
to On
.
Set to something else (Example: production
) it'll do the opposite.
Finally, it's possible to personnalize the enabled PHP modules by changing PHP_ENABLED_MODULES
and setting the list, separated with a space of modules to activate.
Example : PHP_ENABLED_MODULES="curl sqlite3"
If you need to alter the php configuration, you can mount a volume containing .conf
files to
/etc/php5/fpm/user-conf.d/
for PHP 5.x or /etc/php/7.x/fpm/user-conf.d/
for PHP 7.x
Example:
volumes:
- "./conf/php-fpm-override:/etc/php/current/fpm/user-conf.d"
If you have a file named conf/php-fpm-override/memory.conf
containing :
php_value[memory_limit] = 127M
The memory limit will be set to 127Mb. Be careful that you need to stop then start your container to make sure the parameters are taken into account.
To use a specific PHP version, append the version number to the image name.
Eg: image: edyan/php:8.2
The following PHP versions are available:
- PHP 8.2 (Ubuntu 22.04 + sury packages)
- PHP 8.1 (Ubuntu 22.04)
- PHP 8.0 (Ubuntu 22.04 + sury packages)
- PHP 7.4 (Ubuntu 20.04)
- PHP 7.3 (buster slim)
- PHP 7.2 (Ubuntu 18.04)
- PHP 7.1 (Ubuntu 22.04 + sury packages)
- PHP 7.0 (stretch slim EOL)
- PHP 5.6 (jessie slim EOL, not supported anymore)
- PHP 5.5 (Ubuntu 14.04, not supported anymore)
- PHP 5.4 (wheezy slim EOL, not supported anymore)
- PHP 5.3 (Ubuntu 12.04, not supported anymore)
That one has a driver for SQL Server (with MS Drivers).