Skip to main content

Laradock vs DDEV

What is DDEV?

DDEV is a free, open-source command-line tool for running local PHP development environments in Docker. You install one binary, run ddev config and ddev start, and it generates and manages all the Docker containers for you behind the scenes, database, web server, PHP, the works, without you writing or seeing a Dockerfile.

It is popular in the Drupal, WordPress, and TYPO3 communities, and works with Laravel too. This page compares it to Laradock, which takes the opposite approach: instead of a tool that generates Docker for you, Laradock gives you the Docker files themselves, already written.

Same goal, two philosophies: DDEV generates and hides the Docker machinery behind a CLI; Laradock hands you the Docker machinery pre-wired and gets out of the way. This page sets up the same Laravel project with both, honestly.

TL;DR: pick DDEV if you run many similar CMS projects and never want to see a Dockerfile. Pick Laradock if you want to see (and own) everything, need services DDEV has no add-on for, or want your Docker knowledge to transfer beyond the tool.

Setting up a Laravel app with DDEV

DDEV is a Go binary you install first (Homebrew, installer script, or package manager). Then:

mkdir my-app && cd my-app
ddev config --project-type=laravel --docroot=public
ddev start -y
ddev composer create-project laravel/laravel
ddev launch

Your site is live at https://my-app.ddev.site with trusted HTTPS. Need Redis?

ddev add-on get ddev/ddev-redis
ddev restart

Change PHP version:

ddev config --php-version=8.4 && ddev restart

Day to day you talk to the tool: ddev ssh, ddev artisan, ddev composer, ddev import-db. The actual compose files are generated into .ddev/ and regenerated on every start; they are not yours to edit directly.

The same thing with Laradock

Laradock is a git clone; there is nothing to install:

cd my-app
git clone https://github.com/laradock/laradock.git
cd laradock
./laradock start nginx mysql redis workspace
./laradock workspace

Then, inside the workspace: composer create-project laravel/laravel .

Your site is live at http://localhost. Redis was one word in the start command; the same is true for 100+ other services (./laradock start ollama, rabbitmq, elasticsearch, ...).

Change PHP version: set PHP_VERSION=8.4 in .env, then ./laradock rebuild php-fpm workspace (or docker compose build php-fpm workspace).

Prefer a guided start? ./laradock setup (the optional, zero-install CLI) asks the same three-questions-style wizard, then prints every real command it runs.

Day to day you talk to Docker itself: ./laradock enter workspace, ./laradock logs mysql, plain artisan and composer inside the workspace. Every file involved (nginx/compose.yml, php-fpm/Dockerfile, ...) is readable and permanently editable.

Side by side

DDEVLaradock
Installddev binarynothing (git clone)
First runddev config + ddev start./laradock setup + ./laradock start (or plain docker compose)
URLshttps://my-app.ddev.site automatichttp://localhost (or wire Traefik/Caddy yourself)
HTTPSAutomatic, trustedManual (Caddy/Traefik/certbot services included)
Services~50 curated add-ons100+ shipped folders (incl. Kafka, ClickHouse, Ollama, GitLab)
Docker filesGenerated, hidden, regeneratedPlain files you own and edit
Commandsddev * vocabularystandard docker compose *
Multi-project isolationAutomatic per projectManual (COMPOSE_PROJECT_NAME + DATA_PATH_HOST per project)
FrameworksCMS-focused presets (Drupal, TYPO3, WordPress, Laravel)Any PHP project, framework-agnostic
Production deploymentLocal dev tool (generated files don't leave your machine)./laradock ship → hardened image for a server, Kubernetes (EKS/GKE/AKS), or managed cloud
Skills you buildDDEV-specificTransferable Docker

Choose DDEV if...

  • You juggle many similar CMS sites (Drupal, TYPO3, WordPress agency work) and want identical, isolated environments with zero Docker exposure.
  • Automatic HTTPS and per-project domains matter more to you than seeing how they work.
  • You are happy inside a curated add-on ecosystem.

Choose Laradock if...

  • You want full control: every Dockerfile, every config, yours to read and change.
  • Your stack goes beyond the add-on registry (message brokers, search clusters, local LLMs, monitoring).
  • You want to learn real Docker while you work, and keep those skills in production.
  • You do not want to install or trust another binary between you and your containers.
  • You want dev and production to be the same containers. DDEV is a local tool; Laradock's ./laradock ship deploys the exact stack you built to a server, Kubernetes, or a managed cloud. See Deploy to Production.

Already on DDEV? Migrating takes minutes

  1. Export your database while DDEV still runs: ddev export-db --file=backup.sql.gz && gunzip backup.sql.gz
  2. Stop DDEV: ddev stop (keep the .ddev/ folder until you are confident; nothing conflicts).
  3. Add Laradock next to your code: git clone https://github.com/laradock/laradock.git && cd laradock && cp .env.example .env
  4. Start your stack: ./laradock start nginx mysql redis workspace (or docker compose up -d nginx mysql redis workspace)
  5. Import the database: ./laradock exec -T mysql mysql -uroot -proot default < ../backup.sql (or use phpMyAdmin: ./laradock start phpmyadmin, then localhost:8081).
  6. Update your app's .env: DDEV's DB_HOST=db becomes DB_HOST=mysql, credentials are in mysql/defaults.env (user default, password secret by default).
  7. Your site now answers at http://localhost instead of https://my-app.ddev.site.

Frequently Asked Questions

Is DDEV free?

Yes, DDEV is free and open-source (BSD-3 license). There is no paid tier; hosting, if you use DDEV's optional add-ons for it, is billed separately by whichever provider you choose.

Does DDEV require Docker?

Yes. DDEV is a CLI that generates and drives Docker Compose configurations behind the scenes; you still need Docker Desktop (or Colima/OrbStack) installed and running.

Can I use DDEV with Laravel?

Yes, laravel is one of DDEV's built-in project types (ddev config --project-type=laravel), alongside CMS-focused types like WordPress, Drupal, and TYPO3.

Can I edit DDEV's generated Docker files?

Not directly and expect it to stick: files under .ddev/ are regenerated by DDEV and files it manages in your app (like wp-config-ddev.php) carry a #ddev-generated marker; DDEV rewrites anything still carrying that marker on every start. Delete the marker line to make a file permanently yours.

Is DDEV better than Laradock?

Neither is strictly better; they optimize for different things. DDEV optimizes for zero-Docker-exposure convenience with automatic HTTPS and curated add-ons. Laradock optimizes for full transparency and the largest ready-made service catalog. See the full comparison for a breakdown by use case.

See the full landscape, including Sail, Herd, Lando and XAMPP: Laradock vs Others. Ready to try it? Getting Started takes about five minutes.