dde — Docker Development Environment
Features
Section titled “Features”- Automatic HTTPS — Traefik v3 reverse proxy with mkcert-generated certificates trusted by your OS. No browser warnings.
- Local DNS — dnsmasq resolves
*.testdomains to localhost. No/etc/hostsediting required. - Per-project services — MariaDB, PostgreSQL, Valkey, and Mailpit with version pinning — isolated per project.
- Git worktree support — Each worktree gets its own hostname and TLS certificate for parallel feature development.
- SSH agent forwarding — A shared SSH agent container makes your host keys available inside all containers.
- Hook system — Run custom scripts on
project:upandproject:downlifecycle events. - Plugin system — Extend dde with project-local or global plugins to add custom commands.
- Shell completion — Bash and Zsh completions installed automatically via
dde system:install.
Quick Start
Section titled “Quick Start”Prerequisites: Docker and mkcert must be installed.
macOS
brew tap whatwedo/dde && brew install ddeDebian/Ubuntu
curl -fsSL https://packages.dde.sh/apt/key.gpg | sudo gpg --dearmor -o /usr/share/keyrings/dde.gpgecho "deb [signed-by=/usr/share/keyrings/dde.gpg] https://packages.dde.sh/apt stable main" | sudo tee /etc/apt/sources.list.d/dde.listsudo apt update && sudo apt install ddeAlpine
curl -fsSL https://packages.dde.sh/alpine/key.rsa.pub -o /etc/apk/keys/dde.rsa.pubecho "https://packages.dde.sh/alpine/main" >> /etc/apk/repositoriesapk add ddeThen set up the system and initialize your first project:
dde system:install # configure Traefik, dnsmasq, mkcertcd ~/projects/my-appdde project:init # create .dde/config.ymldde project:up # start containersYour application is now available at https://my-app.test with a trusted TLS certificate.
Why dde instead of DDEV?
Section titled “Why dde instead of DDEV?”DDEV is the most mature tool in this space — well-documented, actively maintained, and great for standard setups. However, DDEV wraps every web image in its own Dockerfile layers (user setup, PHP-FPM config, Xdebug, Mailpit). This means you can’t run your production images directly.
dde takes a different approach: your existing Docker images work as-is. dde adds a thin runtime layer that remaps the container user’s UID/GID to match the host, and uses service adapters (nginx, php-fpm, apache) to reconfigure processes at startup. The same image you deploy to production runs locally.
| dde | DDEV | |
|---|---|---|
| Custom prod images | Works as-is | Requires DDEV image layers |
| Image management | Your Dockerfiles, unchanged | DDEV-managed Dockerfiles |
| Runtime overhead | Thin entrypoint (UID remap) | Full image rebuild per project |
| Language | PHP (single binary via static-php-cli) | Go |
| License | AGPL-3.0 | Apache-2.0 |
Supported Platforms
Section titled “Supported Platforms”| OS | Architecture |
|---|---|
| macOS | x86_64, arm64 |
| Linux | x86_64, arm64 |