Sign inSign up

kooldev/php

By kooldev

•Updated about 11 hours ago

PHP Images based on Alpine.

Image
2

500K+

kooldev/php repository overview

CI/CD

⁠Description

PHP Docker images focused on Laravel applications. They're intended for kool.dev⁠, but can fit other PHP use cases.

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:

The default images use Alpine Linux. PHP 8.4 and 8.5 also offer Debian Bookworm variants. All maintained tags are published for linux/amd64 and linux/arm64.

⁠8.5
⁠8.4
⁠8.3
⁠8.2
⁠Legacy versions

PHP 8.1, 8.0, and 7.4 are end-of-life upstream. Their tags remain on Docker Hub⁠, but are no longer built from this repository and receive no updates. Upgrade to a supported PHP version for new deployments.

⁠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:8.5 php -v

With environment variables:

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

With docker-compose.yml:

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

⁠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.

⁠Testing and publishing

Run bash scripts/test-image.sh 8.5 to test a locally built image (replace the tag for other variants). CI uses the same script for every image, building base images before their nginx and node variants so tests use the local base rather than a published tag.

Pull requests build and test without publishing or accessing secrets. Pushes to master, weekly scheduled runs, and manual runs on master also publish multi-architecture images, with base images published before derived images.

Repository secrets:

  • DOCKER_USERNAME and DOCKER_PASSWORD: Docker Hub credentials for publishing images and syncing this README.
  • DISPATCH_TOKEN: token with access to the downstream repositories and permission to send repository dispatch events (fine-grained tokens need Contents write). Without it, CI publishes images but warns and skips downstream builds.

⁠License

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

Tag summary

Content type

Image

Digest

sha256:053c02605…

Size

256 MB

Last updated

about 11 hours ago

docker pull kooldev/php:8.4-debian-nginx