🌐 Languages: English · 简体中文 · العربية · Español
Laradock is a full PHP development environment for Docker. Clone it into any PHP project, run one command, and you have a complete local stack running.
It ships pre-configured containers for everything a PHP application needs: a web server (Nginx), the PHP runtime (PHP-FPM), a database (MySQL), caching (Redis), background jobs (PHP Worker), search (Elasticsearch), mail testing (Mailpit), and 100+ additional services, all ready to use with zero manual configuration.
Whether you're using the built-in Laradock CLI or plain Docker Compose, the same stack works with any PHP project, including Laravel, WordPress, Symfony, Drupal, Magento, 100+ other frameworks and applications, or plain PHP. Every developer gets the same environment on Linux, macOS, and Windows, eliminating setup differences and "works on my machine" problems.
Laradock doesn't stop at local development. The same platform includes a developer-friendly CLI for managing your stack, plus built-in production deployment with ./laradock ship, allowing you to package your application and deploy it to Kubernetes, Google Cloud Run, AWS ECS, your own server, and many more, without switching tools or rebuilding your environment.
The easiest way to run PHP on Docker.
Trusted by 100K+ developers, Laradock is free and open-source under the MIT license, and has been battle-tested in real-world PHP projects since 2015.
Requires Docker with Compose v2.20+.
1 - Clone Laradock inside your PHP project:
git clone https://github.com/Laradock/laradock.git2 - Enter the laradock folder:
cd laradock3 - Start your stack:
./laradock startThe first run opens a wizard: pick your framework, PHP version, stack, and the tools in your dev shell, then hit Enter. Every question comes with a sensible answer pre-selected, so you can hold Enter and get a working stack. After that, start just runs your stack and prints its URLs and credentials (./laradock setup reopens the wizard any time, to add a service, switch PHP version, or add a tool like Xdebug).
4 - Enter the Laradock Workspace (a dev shell with php, composer, node, and git inside):
./laradock workspaceThen open http://localhost. Done.
The CLI is optional, transparent sugar: it prints every docker compose command it runs, keeps no state, and writes nothing but your .env. Unknown commands pass straight through (./laradock logs -f nginx = docker compose logs -f nginx). Full reference: CLI docs.
Prefer plain Docker? Skip the CLI and run docker compose directly, same files, same result. See the manual setup guide.
- Any PHP Version: Run any version from 5.6 to 8.5. Set
PHP_VERSIONin.env, rebuild, and you're on it. - 100+ Ready-made Services: Databases, caches, queues, search engines, and more, pre-configured and waiting.
- All-in-One Dev Shell: Run Artisan, Composer, Node, and any CLI inside the
workspacecontainer, nothing on host. - Deploy to Production: Turn your stack into a hardened image with
./laradock ship, then deploy anywhere. - Pick Your Database: MySQL, PostgreSQL, MariaDB, MongoDB, Redis, and many others, ready to switch on.
- Framework-Agnostic: Works with Laravel, Symfony, WordPress, Magento, Drupal, or plain PHP.
- Local AI, Built In: Run LLMs and vector search locally with Ollama, LiteLLM, pgvector, Qdrant, no cloud bills.
- Toggle Services On Demand: Start only what a project needs with
docker compose up, and stop them easily. - One Environment Everywhere: Identical setup on Linux, macOS, and Windows, so your team shares the stack.
- A Container Per Service: Every service is isolated, so nothing conflicts and each piece is easy to manage.
- Configure From One File: Every service ships pre-configured; override any setting with 1 line in
.env, always wins. - Official Base Images: Every image builds on a trusted upstream source for reliability and security.
- Web Server Ready: NGINX, Apache, and Caddy come pre-configured to serve your code out of the box.
- One or Many Projects: Run a dedicated Laradock per project, or share a single setup across all of them.
- Yours to Edit: Every
Dockerfileand config is plain, readable, and open for you to change.
Battle-tested since 2015, and still growing. Recent highlights:
- Deploy to production,
./laradock shipbuilds an image for any server or cloud. - A plain-English CLI,
./laradock startruns your whole stack, no Docker needed. - Local AI built in, run LLMs and vector databases on your own machine.
- 100+ services ready, plus every PHP version from 5.6 to 8.5.
See the release notes for the full history.
Already on an older version? Jumping straight to the latest is safe, nothing you run changes. See the Upgrade Guide for the one structural change to know about.
Laradock provides the PHP runtime, web server, databases, and background services your app needs, so it runs virtually any PHP framework, CMS, or e-commerce platform:
Not using a framework? Plain PHP works too.
A service is one piece of software (a database, web server, cache, queue) that Laradock runs for you in its own isolated container, already configured. Switch on the ones your project needs, leave the rest off; isolated, they never conflict. To start one: ./laradock start {container-name} (or docker compose up -d {container-name}); the container name matches its folder name, e.g. php-fpm.
See the full service list and usage docs.
Laradock ships a Workspace: a ready-to-use Linux command line with PHP, Composer, Node, Git, and dozens of dev tools already installed. You run every command your project needs inside it, so nothing gets installed on your own machine.
Enter it and work from there, with the Laradock CLI:
./laradock workspaceor plain Docker Compose:
docker compose exec workspace bashartisan, composer, phpunit, npm, and git all just work. Stop the project and zero traces are left on your device.
- Start in seconds. Nothing to install or configure; clone a project and get to work.
- Keep your machine spotless. Your host never gets PHP, Composer, Node, or any CLI, and nothing is left behind when you're done.
- Isolate every project. Each one runs on its own PHP and database versions with no conflicts between them.
- Revive old projects. Run legacy apps on older PHP (5.6, 7.x) without touching your system's PHP version.
Built from two base images, each in its own repo:
laradock/workspace(this dev shell) andlaradock/php-fpm(the PHP runtime).
Here is Laradock from where you sit. You work two ways, open your app in a browser (Nginx serves it through PHP-FPM) or drop into the Workspace terminal (artisan, composer, npm), and both act on the same codebase mounted from your machine. Your code talks to whatever services you switch on, add as many as you need, and the same setup ships to production.
flowchart LR
you(["You<br/>(your machine)"])
subgraph docker["Laradock · your containers on Docker"]
direction TB
nginx["Nginx<br/>web server"]
php["PHP-FPM<br/>runs your PHP"]
workspace["Workspace<br/>terminal: php, composer, node, git"]
code[/"Your codebase<br/>mounted from your machine"/]
subgraph services["Switch on the services you need"]
direction LR
db[("Database<br/>(MySQL)")]
cache[("Cache<br/>(Redis)")]
queue["Queue<br/>(RabbitMQ)"]
search[("Search<br/>(Meilisearch)")]
ai["Local AI<br/>(Ollama)"]
more["…100+ more"]
end
end
ship["Ship to production<br/>any server / cloud"]
you -->|"in your browser"| nginx
you -->|"in your terminal"| workspace
nginx -->|"FastCGI"| php
php -->|"executes"| code
workspace -->|"develops"| code
code -.-> db
code -.-> cache
code -.-> queue
code -.-> search
code -.-> ai
code -.-> more
docker -->|"./laradock ship"| ship
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
class you toneBlue
class nginx,php,workspace toneAmber
class code toneRose
class db,cache,queue,search,ai,more toneMint
class ship toneBlue
The docs go deeper into how a request flows and how the two Docker networks isolate your services.
Laradock follows your app to production. Build one image with ./laradock ship, then run that same image on any of these:
| Where | Platforms |
|---|---|
| Managed clouds | Google Cloud Run, AWS ECS, AWS App Runner, Azure Container Apps, Fly.io, Render, Railway, DigitalOcean, Heroku |
| Your own infrastructure | Kubernetes, Kamal, A single server |
Start here: Deploy to Production.
Laradock started in 2015 as exactly what the name says: Laravel + Docker, back when Laravel had no official Docker answer of its own. Then developers wanted more: more databases, caches, queues, search engines, and projects that were never Laravel at all (Symfony, WordPress, Magento, plain PHP). So Laradock grew with them, from one Laravel stack into 100+ pre-configured services for any PHP project, and now all the way to production with ./laradock ship. Laravel later shipped its own Sail, deliberately small and Laravel-only; Laradock covers the ground it doesn't.
Four things no other tool combines: you pick the services you want and they come wired together, no setup of your own, with a workspace shell that already has every PHP tool in it; ./laradock ship carries this exact environment to production; a local AI stack (Ollama, LiteLLM, Qdrant) is one command away; and an AI agent can set it up for you (AGENTS.md + llms.txt, just say "Set up Laradock for this project"). Full breakdown: Laradock vs Others, or head straight to Sail, DDEV, Herd, Lando, XAMPP, Valet, or Homestead.
Laradock is an MIT-licensed open source project with its ongoing development made possible entirely by the support of you and all these awesome people. 💜
Mahmoud Zalt @mahmoudz |
Yu-Lung Shao (Allen) @bestlong |
Winfried van Loon @winfried-van-loon |
Bo-Yi Wu @appleboy |
Valentino Lauciani @vlauciani |
Arian Acosta @arianacosta |
Erik @erikn69 |
Dwi Fahni Denni @zeroc0d3 |
Dawid Makowski @makowskid |
Luciano Jr @iamlucianojr |
Pavel Savushkin @PavelSavushkinMix |
Philippe Trépanier @philtrep |
Ahkui @ahkui |
Mike Erickson @mikeerickson |
Lan Phan @lanphan |
zhushaolong @zhushaolong |
Frank Yuan @kideny |
xiagw @xiagw |
Abdelrahman Omran @Omranic |
TJ Miller @sixlive |
Thor Erik @thorerik |
Milan Urukalo @urukalo |
Vince Chu @vwchu |
Huadong Zuo @zuohuadong |
< Join Us > @laradock |
Laradock has stayed free and maintained for 10+ years, funded entirely by the developers who use it.
Laradock powers local development for developers and companies worldwide: 100K+ active developers, 5M+ downloads, 100+ services, kept working for 10+ years. Like every open-source project, its future depends on the people who rely on it. Your sponsorship directly funds the maintenance that keeps every service working with the latest PHP, database, and framework versions.
Your team runs on Laradock? Help fund it:
- Individuals sponsor monthly on GitHub, from the price of a coffee.
- Companies get your logo on this README with a real dofollow backlink.
- Pay by invoice or bank transfer if a sponsor button won't clear your finance team: Open Collective issues invoices and takes bank transfers so your organization can pay Laradock directly.
❤️ Sponsor on GitHub · Sponsor via Open Collective · custom or annual agreements: mahmoud@zalt.me
Ask questions, share your setup, and get help from other Laradock developers on GitHub Discussions.
We moved off Gitter in 2026. GitHub Discussions is our only home now.
Have a question, found a problem, or need something? mahmoud@zalt.me
For security vulnerabilities, see SECURITY.md.



























