Public Docker images used by kristijorgji projects (PHP-FPM/nginx runtimes, builders, legacy WordPress).
- Images catalog
- How to build and push to Docker Hub
- Environment variables
- Extension / PHP bump policy
- Local smoke test (php-fpm-8-nginx)
- Changelog highlights
| Folder | Docker Hub image | Runtime | Purpose |
|---|---|---|---|
| php-fpm-8-nginx | kristijorgji/php-fpm-8-nginx |
PHP 8.5 / Alpine 3.24 (0.0.8) |
PHP-FPM + nginx + supervisord for API/payments apps |
| web-builder | kristijorgji/web-builder |
Node-oriented builder | Frontend/static build helper |
| wordpress-php-7.1 | kristijorgji/wordpress-php-7.1 |
PHP 7.1 (legacy) | Legacy WordPress stack |
See php-fpm-8-nginx/README.md for FPM listen address (127.0.0.1:9000), port 8080, extension list, and /pre-entrypoint.sh.
Publish only via this script (multi-arch buildx --push). Never docker build + docker push from a Mac
— that overwrites the Hub tag with a single arm64 manifest and breaks amd64 production.
One-time builder setup on Apple Silicon:
docker buildx create --name multiarch --use 2>/dev/null || docker buildx use multiarch
docker run --privileged --rm tonistiigi/binfmt --install allproject=php-fpm-8-nginx
TAG=0.0.8 bash build-and-push-to-dhub.sh "$project"project must be the name of one of the folders in this repository.
After push, confirm a manifest list with both platforms:
docker buildx imagetools inspect kristijorgji/php-fpm-8-nginx:0.0.8
# expect linux/amd64 and linux/arm64
docker pull --platform linux/amd64 kristijorgji/php-fpm-8-nginx:0.0.8
cid=$(docker create --platform linux/amd64 --entrypoint /bin/true kristijorgji/php-fpm-8-nginx:0.0.8)
docker cp "$cid:/bin/busybox" /tmp/bb-amd64 && docker rm -f "$cid"
file /tmp/bb-amd64
# expect x86-64, not aarch64| Variable | Required | Description |
|---|---|---|
TAG |
yes | Tag to push (e.g. 0.0.8) |
DOCKER_TARGET_PLATFORM |
no | Defaults to linux/amd64,linux/arm64 (comma-separated) |
DBUNAME |
no | Docker Hub username; defaults to kristijorgji |
When bumping the PHP minor/major in php-fpm-8-nginx:
- Keep the full extension matrix from the previous tag (bcmath, curl, gd, imagick, redis, pdo_mysql, soap, sockets, …).
- Prefer Alpine community
phpXX/phpXX-pecl-*packages over ad-hocpecl install. - After build, confirm with
php -mthat every required module loads. - Publish the new tag with the multi-arch script before updating consumers.
Local docker build is for smoke only on your machine. Do not push that image to Hub.
docker build -t kristijorgji/php-fpm-8-nginx:0.0.8-local ./php-fpm-8-nginx
docker run --rm --entrypoint php kristijorgji/php-fpm-8-nginx:0.0.8-local -v
docker run --rm --entrypoint php kristijorgji/php-fpm-8-nginx:0.0.8-local -m
docker run --rm --entrypoint php-fpm85 kristijorgji/php-fpm-8-nginx:0.0.8-local -t- Alpine 3.18 → 3.24
- PHP 8.2 → 8.5 (
php85packages,/etc/php85,php-fpm85) - Extension parity with
0.0.7plusphp85-pecl-imap - Explicit
php85-socketsandphp85-mysqlnd - Must be published as multi-arch (
linux/amd64+linux/arm64)