A ready-to-use container designed for running PHP-based applications, including Laravel microservices. This Docker image comes with PHP-FPM, offering a robust foundation for your projects with built-in support for essential extensions and configurations.
- PHP Application Support: Optimized to run Laravel or any PHP-based applications.
- Integrated Extensions:
- Database: MySQL and PostgreSQL.
- Caching: Redis and Memcached.
- Messaging: Kafka for event-driven architecture.
- Task Scheduling: Laravel Scheduler and Cron jobs support.
- Custom Configuration: Pre-configured with sensible defaults, allowing seamless customization.
- Event Handling: Support for advanced event-driven processes.
- Optimized for Microservices: Built with modern PHP microservices in mind.
This image is ideal for developers looking for a streamlined, high-performance solution to deploy PHP applications with essential tools already integrated.
- 8.4
- 8.3
- 8.2
- 8.1
- 8.0
- 7.4
- 7.2
- Composer
- OpenSSL
- XML
- PDO (MySQL and PostgreSQL)
- Rdkafka
- Redis
- Mbstring
- PCNTL
- ZIP
- GD
- BCMath
- Memcached
- Opcache
- Laravel Cron Jobs
- Laravel Scheduler
- Supervisord
- Node.js and NPM
services: php-fpm: image: jkaninda/laravel-php-fpm:latest container_name: php-fpm restart: unless-stopped user: www-data # For production volumes: - ./:/var/www/html networks: - default nginx-server: image: jkaninda/nginx-fpm:alpine container_name: nginx-server restart: unless-stopped ports: - 80:80 volumes: - ./:/var/www/html environment: - DOCUMENT_ROOT=/var/www/html/public - CLIENT_MAX_BODY_SIZE=20M - PHP_FPM_HOST=php-fpm:9000 networks: - default-
Start Containers
docker compose up -d
-
Create a Laravel Project
docker compose exec php-fpm composer create-project --prefer-dist laravel/laravel .
-
Generate Application Key
docker compose exec php-fpm php artisan key:generate -
Create Storage Symlink
docker compose exec php-fpm php artisan storage:link -
Fix Permissions
docker compose exec php-fpm chmod -R 777 storage bootstrap/cache -
Run Laravel Migrations
docker compose exec php-fpm php artisan migrate -
Access the Container Shell
docker exec -it php-fpm bash
Example of using a custom nginx config:
version: '3' services: php-fpm: image: jkaninda/laravel-php-fpm container_name: php-fpm restart: unless-stopped volumes: - ./:/var/www/html networks: - default nginx-server: image: nginx:alpine container_name: nginx-server restart: unless-stopped ports: - 80:80 volumes: - ./:/var/www/html - ./default.conf:/etc/nginx/conf.d/default.conf environment: - DOCUMENT_ROOT=/var/www/html/public - CLIENT_MAX_BODY_SIZE=20M - PHP_FPM_HOST=php-fpm:9000 networks: - defaultserver { listen 80; index index.php index.html; root /var/www/html/public; location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass php-fpm:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } location / { try_files $uri $uri/ /index.php?$query_string; gzip_static on; } client_max_body_size 15M; server_tokens off; fastcgi_hide_header X-Powered-By; } FROM jkaninda/laravel-php-fpm:8.3 # Copy Laravel project files COPY . /var/www/html VOLUME /var/www/html/storage WORKDIR /var/www/html # Fix permissions RUN chown -R www-data:www-data /var/www/html USER www-dataPlace configurations in /etc/supervisor/conf.d/.
Example Kafka consumer process:
[program:kafkaconsume-worker] process_name=%(program_name)s_%(process_num)02d command=php /var/www/html/artisan kafka:consumer autostart=true autorestart=true numprocs=1 user=www-data redirect_stderr=true stdout_logfile=/var/www/html/storage/logs/kafka.log Place your custom php.ini file at:
/usr/local/etc/php/conf.d/ If you encounter permission issues, run:
docker compose exec php-fpm /bin/bash chown -R www-data:www-data /var/www/html chmod -R 775 /var/www/html/storageAre you building a microservices architecture? Do you need a powerful yet lightweight API Gateway or a high-performance reverse proxy to secure and manage your services effortlessly?
Check out my other project — Goma Gateway.
Goma Gateway is a high-performance, declarative API Gateway built for modern microservices. It comes with a rich set of built-in middleware, including:
- Basic, JWT, OAuth2, LDAP, and ForwardAuth authentication
- Caching and rate limiting
- Bot detection
- Built-in load balancing
- Simple configuration with minimal overhead
- ...and more!
Protocol support: REST, GraphQL, gRPC, TCP, and UDP
Security: Automatic HTTPS via Let’s Encrypt or use your own TLS certificates
Whether you're managing internal APIs or exposing public endpoints, Goma Gateway helps you do it efficiently, securely, and with minimal complexity.
If this project helped you, do not skip on giving it a star. Thanks!