DDEV

DDEV Foundation·DDEVFoundation.DDEV

Docker-based local PHP+Node.js web development environments

winget install --id DDEVFoundation.DDEV --exact --source winget

Latest 1.25.4·September 2, 2026

Release Notes

Installation

See the installation instructions for details, but it's easy:

• macOS:brew install ddev/ddev/ddev or just brew upgrade ddev. • Linux:Use sudo apt-get update && sudo apt-get install ddev, see apt/yum installation ⚠️ Linux apt/yum users:packages are now served from Cloudsmith (packages.ddev.com). Your existing Gemfury (pkg.ddev.com) setup keeps working, but please re-run the Linux installation steps to switch over. • Windows and WSL2:Download the Windows Installer; you can run it for install or upgrade. ⚠️ Traditional Windows users (not WSL2):If needed, the installer will prompt you to uninstall the previous system-wide installation to avoid conflicts with the new per-user installation. • Consider ddev delete images or ddev delete images --all after upgrading to free up disk space used by previous Docker image versions. This does no harm. • Consider ddev config --auto to update your projects to current configuration.

Highlights

• Database seeding and reset: ddev start --seed-snapshot=<name-or-path> fills a new database from any snapshot, and ddev start --reset-database deletes the current database and starts fresh, see Snapshots and Database Seeding below • MySQL 9.7 LTS support, and MySQL 8.0/8.4 now build from Docker Hardened Images (dhi.io/mysql) instead of bitnamilegacy/mysql, which gets no updates • Env files: .env.local for values you don't want in Git, several files per service separated by a label, and global files that apply to every project, see Environment Variables • Set things once for every project: global Dockerfiles in ~/.ddev/web-build/ and ~/.ddev/db-build/, and global env files in ~/.ddev/.env*, see Global Configuration below • apt/rpm packages are now published to Cloudsmith (packages.ddev.com) as well as Gemfury, and the yum repo now verifies package signatures, which the Gemfury one never did. Gemfury (pkg.ddev.com) is still supported but will be retired eventually; see the Linux note above to switch over

Snapshots and Database Seeding

• A snapshot named seed is automatically loaded when you start a project with an empty database. So if you delete your db or project and then ddev start, you'll have the database from the seed snapshot. • ddev start --seed-snapshot fills a new database from a snapshot in .ddev/db_snapshots, or from a path to one anywhere else on your machine. A snapshot outside the project is read where it is instead of being copied, so a multi-GB file is not duplicated. A snapshot named seed is used automatically, with no flag. Works for MariaDB, MySQL, and PostgreSQL • ddev start --reset-database deletes the database and starts fresh. It takes a snapshot first, using the database version that created the data, so this also works when you already changed database: in your config. ddev config --database= now warns instead of failing, and ddev delete no longer refuses to work on a project whose data came from a different database server • ddev snapshot restore --force restores a snapshot made by a different version of the same database server • ddev snapshot --list shows each snapshot's size and database version • ddev snapshot restore and ddev snapshot --list also see snapshots from other Git worktrees of the same repository, so a database doesn't have to be copied between worktrees by hand • Snapshots and the database seed can skip compression with --uncompressed:more disk space, faster restore. The base_db seed also reads zstd now, not only gzip, which is much faster for a custom dbimage with a large database built into it, thanks to @weitzman

Global Configuration

These apply to every project on your machine, so you set them once instead of in each project.

• New global Dockerfiles in ~/.ddev/web-build/ and ~/.ddev/db-build/ add the same image changes to every project - CA certificates, system tools, extra apt packages. If a project has a file with the same name in its own .ddev/web-build/, the project file is used, thanks to @rmott-littler • New global env files ~/.ddev/.env and ~/.ddev/.env.<service> set variables for every project. This is the only way to set a variable globally for a container other than web, since web_environment only reaches web. If a project sets the same variable, the project value is used. Write these files with ddev dotenv global set • Add-on install actions now see .ddev/.env and the global ~/.ddev/.env* files, not only .ddev/.env.<addon>. If you set a DDEV_* variable in .ddev/.env, that value is used there. A .ddev/.env.<service>.<label> file is also passed into that service's container now; before, it was only used to fill in variables in your docker-compose files

Features

• Two new project types: MODX Revolution 2.x/3.x, thanks to @casparml, and Maho, thanks to @fballiano • Shopware 6 projects get shopware-cli in the web image, plus ddev admin-watch and ddev storefront-watch with the ports they need, so the ddev-shopware-cli add-on isn't needed, thanks to @vanWittlaer • New ddev add-on update checks installed add-ons against their latest GitHub release and updates the outdated ones, with --dry-run to see what would change • New ddev utility download-ddev fetches the ddev and ddev-hostname binaries for a PR, branch, commit, release tag, latest stable, or main HEAD, without touching your installed DDEV • New ddev utility delete-volume removes one of the project's Docker volumes by name or from an interactive list, for add-ons like ddev-solr that create their own • ddev launch --print-url and DDEV_LAUNCH_PRINT_URL=true ddev launch print the URL instead of opening a browser, for SSH, containers, and CI, thanks to @steffenmaechtel • New ddev tablepro host command for the TablePro database client on macOS, thanks to @datlechin • New nodejs_root lets nodejs_version:auto/engine read the version file from a subdirectory such as web/themes/custom/mytheme. Both now require that file to exist; before, if it was missing, DDEV installed its default version without telling you, thanks to @dpacassi • The dbimage config option works again after a long absence, mirroring webimage, along with ddev config --db-image/--db-image-default • If you pin a custom webimage or dbimage, ddev start warns you when that image was built from an older DDEV image than this version expects, instead of failing later in a way that gives no hint why. Official images now record the DDEV version they were built for, so the warning starts working after you rebuild your own image, thanks to @weitzman • ddev ssh and ddev exec pass your TERM and COLORTERM into interactive sessions, so you get more than 16 colors, thanks to @wazum • ddev start warns when DDEV itself is an unreleased build from a PR or a local branch, and ddev version shows where it came from • Drupal settings.ddev.php configures symfony_mailer_lite the way it already configured symfony_mailer, thanks to @mxr576 • The FAQ explains how to move from Homebrew to a specific DDEV version, thanks to @joachim-n

Bug Fixes for Regressions from v1.25.3

• Project image builds are fast again. Permissions on the Node.js directory were being changed recursively on every build, and now they are set once when the image is built • Add-ons and apps that write log files straight into /var/log can do that again, after the directory was locked down to root only • A site that generates /robots.txt itself works again, including Drupal's RobotsTxt module. An nginx rule was answering /robots.txt before your site could, and it is now removed • Projects that pin the web service to a specific platform, like platform:linux/amd64 on an Apple Silicon Mac, start again • Orphan containers get removed again, so Docker Compose stops warning about them

Bug Fixes

• ddev wp uses the path from your project's own wp-cli.yml again, and only falls back to the docroot when that file doesn't set one, which is what the docs always said. Since v1.24.5 it always added --path=$DDEV_DOCROOT, which broke Bedrock and any layout where WordPress isn't in the docroot • Running ddev in a subdirectory that has its own .ddev/config.yaml, like a

Installer type: nullsoft

x64—A0BCA7D8F97612D2AAFAA627FF941AA3EB427D4D6014F0395CC01AC612ABE9AE
arm64—5793174B1C8D6B0CDE4E372F245071890BB9DAB1FD8C5F979B8FA1727A3B23B4

Details

Homepage
https://github.com/ddev/ddev
License
Apache-2.0
Publisher
DDEV Foundation
Support
https://github.com/ddev/ddev/issues

Tags

backdropcraftcmsddevdevelopmentdockerdrupallaravellinuxlocal-developmentmacosmagentomagento2mariadbmoodlenodejsphp

Older versions (12)

1.25.3
x64—D81C9DCAA91F9F0BC4AEA57E460C70C8A868CF5994DBF2CF915867B66FAAFD3C
arm64—9C3F2E67E78588D9264AFE2E072E8457BCAA668C20653ABB1C75AA6735C6EED3
1.25.2
x64—97B90137F5DCCC0D2C22C49221E1A0831CD77D0E4EFF1E14152405A1EAB3B4C5
arm64—22066540462063B2FDC01F4E46C0953FA5A61A2A7063A32FB3F0C15DC8BEC53E
1.25.1
x64—2B11532B03F4A1F04ED876B0F2F7D67F7625C9544CF3D6E89D057EFFE0219E96
arm64—94AAC0CE0DA5D2A44FE6E2378B7C52292F25B471925A4600AA6740F09F7BA128
1.25.0
x64—4283C8F03CE4C1EB589A4E7F67F6F385C7E8EF4FA957BE533098C672CC701B55
arm64—D464629570E7D678C031AD6BD26C016EB3771BB245D7D67EC6EFEC4D7FCDF943
1.24.10
x64—81763745EB23D503FCACAEBE52C0045C062EF185504F5A21983B2675BD695371
arm64—8CF163ED996A680BA4DB4581B261E7E61AFC279C7121E59DA98D67EA0E894FEA
1.24.9
x64—8C9CA78B1E3408BFC2B5A577103A128C255F89203B0A7FE5D0274D0FDAF6D604
arm64—DA9156BE791FB0586E63F0BB20F658B827D63D76BF3982CCDB799E3D6E86FC23
1.24.8
x64—68754CABFE6A48E5F4F94B4026DD51A7A7E20257C23ADAF1E270387D87632206
arm64—504748475153A8A162344AB78DC42A66579D1F4FAF870D22D23751981C614325
1.24.7
x64—84B6E0A956FB8E88C49D31784AA7AB4E6C2EA87972EE0B5E318158C6BCE37E54
arm64—C0518E339DBFC70F2C42BEDB3C8A21C2DDEBCA7BFDC774DE50DD5FFEBBE5B5D3
1.24.6
x64—F0154FCACABFD3D2ADC56768D609253D23F9B7A308567D490822F0D2785F670E
arm64—B53E835714605D40966F104602472FD0501CFE7F89A2884A4B7B8C7CE392AD02
1.24.5
x64—182029AE72F78E2B70BCB52DADC9688D856EBAF3FEA2A97AC7B0553D7D7E0812
arm64—CE92F1EDB951A5B43168737CD2163E065AE19F5E6C35B7EBBAD40030665289A8
1.24.4
x64—3BBB3E570AAAE29D71DDB05D9B46F9146B8973082A1073B253077B0BE00BCD1B
arm64—C0386213DA46211090D88FCCFF15A9B9AD214B2004D55621EB0FB2D33EB4635C
1.24.1
x64—175CFD5485FE629271547C56A38829C206495608C1D188B1C557746781739C23
arm64—5AD3DCD54AE8871C8DED640C752D1E6E102D8CAA3B0A682FB706A0ECBCBA6E93