Why I Stopped Using Laravel Sail…
As a Laravel developer working across multiple projects at once, I initially loved how easy Sail made it to spin up a Docker environment. But the more projects I added, the more issues I ran into.
Eventually, I had to ditch Sail for something faster, leaner, and easier to manage — especially when dealing with 5+ projects at the same time.
Here’s why, and what I built instead.
The Problem With Laravel Sail in Multi-Project Workflows
Sail is great for a single Laravel project. But if you’re working on several simultaneously or switching between them frequently, it starts to get painful.
1. High Resource Usage
Every Sail project launches its own set of containers (MySQL, Redis, etc.). That means:
- More RAM and CPU usage
- Conflicts unless you manually set different ports in each
.env
- Constant up/down switching between projects
2. It Eats Disk Space
Each project builds its own Docker image. Over time, this eats up disk space fast.
Just recently, I ran:
docker system prune
And freed up 45GB of disk space — mostly from old Sail images and volumes.
3. It’s Slow
Every new project rebuilds everything from scratch, even if your environments are nearly identical.
🔍 I Looked for Alternatives
I explored tools like:
- Herd
- Laravel Valet
- Longhorn
But:
- Most are Mac-only
- Some are paid
- Others are too limited for Docker-based workflows
I wanted something:
- Lightweight
- Cross-platform
- Docker-native
- Centralized and reusable across all projects
✅ Introducing Larasaur
Since I couldn’t find what I wanted, I built it myself.
Larasaur is a minimal Docker dev environment that supports all your Laravel projects from a single shared setup. You save time, resources, and disk space.
📦 Folder Structure
Here’s what your directory structure could look like:
~/projects/
├── dev-env/ ← Larasaur lives here
├── x/
│ ├── a-laravel/
│ └── b-laravel/
├── y/
│ ├── c-laravel/
│ └── v-laravel/
└── z/
├── h-old-laravel/
└── b-new-laravel/
🚀 Getting Started
- Clone the repo :
git clone https://github.com/mohaphez/larasaur.git ~/projects/larasaur
cd ~/projects/larasaur
bash install-dev-shortcuts.sh
- Start the shared environment:
up
- Add a Laravel project:
cd ~/projects/x/a-laravel
addsite
This creates a local Nginx config and sets up a .local
domain like:
http://a-laravel.local
- Done! Now just run
addsite
for every new project, followed byrestart
if needed.
🙌 Why Larasaur Works Better
- ✅ Centralized Docker environment
- ✅ One-time image build — no duplicate containers
- ✅ Minimal disk usage
- ✅ Works with any Laravel version
- ✅ No need to install PHP/MySQL/Redis locally
Now, I only use Sail when a project requires a custom stack (like PHP 7.4 or other unique needs).
🔚 Final Thoughts
If you’re tired of Sail draining your system and duplicating setups, Larasaur might be exactly what you need.
It’s simple. It’s fast. And it just works.
🧪 Open-source, free, and built from real-world pain.
Let me know in the comments if you try it — or if you have ideas to improve it!