Production-ready FrankenPHP: custom Caddy build, 51 PHP extensions, Composer, WP-CLI, Node.js
2.5K
Maintained by morsalin1342 · GitHub
FrankenPHP is a modern PHP app server built in Go. This image bundles a custom-compiled Caddy web server, 51 PHP extensions, and essential CLI tools — everything you need to run production PHP applications in a single container.
| Feature | Official image | This image |
|---|---|---|
| Caddy modules | Minimal | ✅ 16 — WAF, rate limiting, Brotli, Souin, 6 DNS |
| Web application firewall | ❌ | ✅ OWASP Coraza, Core Rule Set compiled in |
| PHP extensions | Few built in | ✅ 51 pre-installed |
| Composer / WP-CLI | ❌ | ✅ Both |
| Node.js | ❌ | ✅ v24, configurable |
| MariaDB client | ❌ | ✅ mariadb tools, also as mysql, mysqldump |
| Debian release | One | ✅ trixie (Debian 13) |
# docker-compose.yml
services:
app:
image: morsalin1342/frankenphp:8.4
ports:
- "80:80"
- "443:443"
- "443:443/udp"
volumes:
- ./public:/app
- ./Caddyfile:/etc/caddy/Caddyfile
# Caddyfile
:80 {
root * /app
encode zstd gzip
php_server
file_server
}
| Tag | PHP | Base OS |
|---|---|---|
latest, 8.5, 8.5-trixie | 8.5 | trixie |
8.4, 8.4-trixie | 8.4 | trixie |
8.3, 8.3-trixie | 8.3 | trixie |
8.2, 8.2-trixie | 8.2 | trixie |
Only Debian 13 (trixie) is built, and -trixie tags are aliases of the unsuffixed ones. The old -bookworm tags stay available but are no longer updated.
The full list of extensions and tools, with versions, is in EXTENSIONS.md.
FROM morsalin1342/frankenphp:8.4
RUN install-php-extensions xdebug
COPY php.ini /usr/local/etc/php/php.ini
Q: Can I add extensions?
A: Yes — RUN install-php-extensions <name> in a layer on top; the installer is already in the image.
Q: How do I run queue workers?
A: Run them as separate containers from the same image with their own command; supervisor and cron are not included.
Q: Is there a bookworm image?
A: No. Only trixie is built now. Older -bookworm tags stay on Docker Hub but are no longer updated.
| Image / Tool | Description |
|---|---|
| morsalin1342/caddy | Standalone Caddy with WAF, rate limiting & caching |
| morsalin1342/php | Traditional PHP-FPM & CLI images |
| morsalin1342/nginx | nginx with ModSecurity 3, Brotli, zstd & GeoIP2 |
| morsalin1342/apache | Apache as a static server or php-fpm application server, no PHP inside |
| easydigital/frankenphp | Same image, organization namespace |
⭐ If this image helps you, consider giving it a star on GitHub!
Content type
Image
Digest
sha256:fd2f14629…
Size
559.4 MB
Last updated
6 days ago
docker pull morsalin1342/frankenphp