Dockerize PHP Laravel or Lumen projects with the common extensions
This is an edited clone of Sail but with PHP 8.3 version.
- Add the provided files to your project.
- Review the
Dockerfile
and remove any unneeded steps to minimize the image. - Run
docker compose up
orsudo docker compose up
.
The artisan serve
command is not designed for production environments and is better suited for development. To discourage its use, make the following adjustment:
Comment out the default PHP command that uses artisan serve
:
# ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan serve --host=0.0.0.0 --port=80"
- Enable Octane with Swoole
For better performance, use Octane with Swoole. Uncomment and configure the Octane-related command in your Dockerfile:
Use Octane with Swoole for improved performance:
ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=swoole --host=0.0.0.0 --port=80"
- Set Up Nginx as a Reverse Proxy
Nginx will act as the proxy server, handling all incoming requests and forwarding them to Octane. This setup ensures you get maximum performance from Octane with Swoole.
Steps to Implement
- Install Octane in Your Lumen Application
Run the following commands:
composer require laravel/octane
php artisan octane:install
php artisan vendor:publish --tag=octane-config
- Update Your Dockerfile
Configure Octane as the default PHP server:
# Set Octane as the default PHP command
ENV SUPERVISOR_PHP_COMMAND="/usr/bin/php -d variables_order=EGPCS /var/www/html/artisan octane:start --server=swoole --host=0.0.0.0 --port=80"
- Configure Nginx
Use Nginx to forward traffic to Octane.
- Deploy the Setup
Build and start your Docker containers:
docker-compose up --build
By following this approach, your Laravel Lumen application will leverage the performance benefits of Octane with Swoole, while Nginx acts as the reverse proxy to handle incoming traffic efficiently.
Buy Me a Coffee