Production-Ready Docker Compose for Laravel & Filament
This setup is based on real production usage and evolved over time as I faced scaling and deployment issues.
Introduction
In the previous article about Docker Setup, we built a production-ready Docker image for Laravel & Filament.
But in real-world applications, a single container is never enough.
Running a production application requires orchestrating multiple services:
- a web server
- a PHP runtime
- a database
- a cache system
- background workers
- scheduled jobs
In this article, I'll show you the exact Docker Compose setup I use in production to run Filament applications reliably.
This setup is based on real production usage and evolved over time as I faced scaling and deployment issues.
Why I don't use Supervisor
A common approach is to run everything inside a single container using tools like Supervisor:
- PHP-FPM
- Horizon
- scheduler
I used this approach in the past, but it quickly becomes limiting.
Main issues:
- hard to monitor individual processes
- no granular healthchecks
- scaling becomes all-or-nothing
- debugging is more complex
Instead, I follow a simple rule:
👉 one container = one responsibility
This makes the system easier to reason about and much more flexible in production.