README.md

May 18, 2026 · View on GitHub

CI/CD

Description

Minimal PHP Docker image focused on Laravel applications. It's use is intended for kool.dev, but can fit in any other PHP use-case.

The images with Nginx include h5bp/server-configs-nginx with a hand picked set of configuration active by default. So if you want to change or add a new server configuration you can include h5bp/... as you see fit.

Usage

Simplest example:

asciicast

About composer

All images currently ship out with Composer 2.x as the default version. If for some reason you still need to use Composer 1.x and cannot make the upgrade, we still ship a composer1 in the images PATH as well, which is latest Composer 1.x version. Feel free to use it while you prepare to move to 2.0.

Available Tags

The image built is kooldev/php which has a bunch of tags available:

8.5

8.4

8.3

8.2

8.1

Legacy versions

More flavours

We can always extend these images to suit them to our current use case. For example, we have a few extensions for specific use cases:

Environment Variables

VariableDefault ValueDescription
ASUSER0Changes the user id that executes the commands
UID0Changes the user id that executes the commands (ignored if ASUSER is provided)
COMPOSER_ALLOW_SUPERUSER1Allows composer to run with super user
COMPOSER_MEMORY_LIMIT-1Changes composer memory limit
ENABLE_XDEBUGfalseEnables the Xdebug extension
PHP_DATE_TIMEZONEUTCChanges timezone used by date/time functions
PHP_MEMORY_LIMIT256MChanges PHP memory limit
PHP_MAX_INPUT_VARS1000 Changes how many input variables may be accepted on PHP
PHP_UPLOAD_MAX_FILESIZE25MChanges PHP maximum size of an uploaded file
PHP_POST_MAX_SIZE25MChanges PHP max size of post data allowed
PHP_MAX_EXECUTION_TIME30Changes PHP maximum time is allowed to run a script
PHP_FPM_LISTEN9000Changes the PORT address of the FastCGI requests
PHP_FPM_PMdynamicPHP-FPM process manager strategy
PHP_FPM_MAX_CHILDREN10Changes the number of child processes to be used on FPM
PHP_FPM_REQUEST_TERMINATE_TIMEOUT60Changes FPM timeout to serve a single request

NGINX

VariableDefault ValueDescription
NGINX_LISTEN80Changes the PORT address
NGINX_ROOT/app/publicChanges NGINX root directive
NGINX_INDEXindex.phpChanges the index directive
NGINX_CLIENT_MAX_BODY_SIZE25MChanges maximum allowed size of the client request body
NGINX_PHP_FPMunix:/run/php-fpm.sockChanges the address of a FastCGI server
NGINX_FASTCGI_READ_TIMEOUT60sChanges a timeout for reading a response from the FastCGI server
NGINX_FASTCGI_BUFFERS8 8kChanges the number and size of the buffers used for reading a response
NGINX_FASTCGI_BUFFER_SIZE16kChanges the size of the buffer used for reading the first part of the response received
NGINX_ENTRYPOINT_WORKER_PROCESSES_AUTOTUNEtrueEnables auto-tuning of worker processes based on available CPU cores (container instead of host), to disable set it to empty string
NGINX_HTTPSfalseEnables the HTTPS server
NGINX_LISTEN_HTTPS443Port for the HTTPS server to listen
NGINX_HTTPS_CERT/kool/ssl/_.localhost.pemThe path in the container for the SSL certificate file
NGINX_HTTPS_CERT_KEY/kool/ssl/_.localhost.keyThe path in the container for the SSL certificate key file

Usage

With docker run:

docker run -it --rm kooldev/php:7.4 php -v

With environment variables:

docker run -it --rm -e ENABLE_XDEBUG=true kooldev/php:7.4-prod php -v

With docker-compose.yml:

app:
  image: kooldev/php:8.2
  ports:
    - "9773:9773"
  volumes:
    - ".:/app:cached"
    - "$HOME/.ssh/id_rsa:/home/developer/.ssh/id_rsa:cached"
  environment:
    ASUSER: "${$UID}"

Contributing

Update images with templates

You should change fwd-template.json for configuration and template folder for the actual base templates.

After any changes, we need to run kool run template to parse the templates and generate all versions folder/files.

License

The MIT License (MIT). Please see License File for more information.