Releases: ddev/ddev
v1.25.0
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux: Use
sudo apt-get update && sudo apt-get install ddev, see apt/yum installation - Windows and WSL2: Download the Windows Installer; you can run it for install or upgrade.
winget install --interactive ddevworks too.
⚠️ 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 imagesorddev delete images --allafter upgrading to free up disk space used by previous Docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights
New defaults
- Debian Trixie is now the base image for
ddev-webserverandddev-ssh-agent(replacing Debian Bookworm). See Issues to be aware of for Trixie.
(Some projects with complex Dockerfiles or obsoletewebimage_extra_packagesmay need to be updated.) - XHGui is now the default profiler (prepend mode remains available via
ddev config global --xhprof-mode=prepend). - Node.js v24 is default in new projects (replacing Node.js v22)
- PHP 8.4 is default in new projects (replacing PHP 8.3)
- MariaDB 11.8 is default in new projects (replacing MariaDB 10.11)
Additional highlights
- Completely revised Windows installer now uses per-user installation for WSL2 or traditional Windows (no admin account required)
- Reworked configurable
ddev sharecommand with a new cloudflared share provider, see new docs and blog - Add
ddev utility xdebug-diagnosecommand, see Xdebug in DDEV: Understanding, Debugging, and Troubleshooting Step Debugging - Add
ddev utility mutagen-diagnosecommand, see Mutagen in DDEV: Functionality, Issues, and Debugging ddev pantheon pullgot newDDEV_PANTHEON_SITE,DDEV_PANTHEON_ENVIRONMENT,DDEV_USE_PANTHEON_BACKUPvariables, see updated Pantheon Integrationddev snapshotnow uses zstd instead of gzip for significantly faster exports and restores, thanks to @deviantintegral- Add CodeIgniter project type, thanks to @Franky5831
- Experimental support for Podman and Docker Rootless, see Podman and Docker Rootless in DDEV
ddev-frankenphpis an official add-on with many improvements, see updated Using FrankenPHP with DDEV
Features
- New Wagtail (Python, Generic) quickstart
- Added Drupal 12 project type (development branch). Drupal 12 has not yet been released, but it's showing up in developer builds already.
- New
--no-cacheflag forddev startandddev restart(as an alternative toddev utility rebuild) - Improved support for non-Codespaces devcontainers
- Refactored
ddev add-onsubcommands with a fallback mechanism to avoid GitHub API rate limits - Much faster
ddev add-on listandddev add-on search - Shell autocompletion for
ddev add-on get <TAB> - SELinux enviroment detection (auto SELinux label for bind mounts)
- Support for additional SSH config files (
*.conf) in.ddev/homeadditions/.ssh/config.d(global or project-level), see SSH confugation, thanks to @codebymikey - More portable database collations. Databases imported and exported from newer MySQL and MariaDB are less likely to have problems with proprietary collations like
utf8mb4_0900_ai_ciandutf8mb4_uca1400_ai_cias they use more traditional collations in DDEV. - DBeaver support for traditional Windows, thanks to @ddubau
Traefik Router Features, Fixes, and Breaking Changes
- Project Traefik configuration is now standardized to a single file:
.ddev/traefik/config/<projectname>.yaml(all other files are ignored). See issue #8047. - Add any global Traefik configuration inside the
$HOME/.ddev/traefik/custom-global-config/directory - Removed
defaultRuleSyntax: v2andruleSyntax: v3from Traefik configs. Traefik v3 syntax is now used by default. - Traefik configuration errors now show warnings instead of failing hard
- Improved Traefik health checks for more reliable router verification
- Prevent unnecessary router recreation when bound ports are unchanged
ddev-routeris no longer stopped automatically when the last project is stopped, useddev poweroffto fully stop the router- Traefik monitoring port is now bound to localhost only, thanks to @JUVOJustin
- Paused or stopped projects are excluded from Traefik configuration
- Bypass router port checks when all ports appear busy (for example, when endpoint security software intercepts localhost traffic)
Breaking Changes / Removals
- Default
xhprof_modechanged from "prepend" to "xhgui" but you can easily change it back - Removed
ddev utility capabilities, useddev_version_constraintinstead in add-ons. - Removed NFS support, use Mutagen
- Removed
ddev service, custom services can be installed/uninstalled viaddev add-on - Removed
ddev nvm, install theddev-nvmadd-on if needed - Removed obsolete or non-functional commands and command aliases:
ddev restore-snapshotddev auth pantheonddev config pantheon
- Removed obsolete
ddev configflags:--mutagen-enabled(use--performance-mode=mutagen)--upload-dir(use--upload-dirs)--db-image,--db-image-default(never documented or used)
- Removed deprecated
ddev configflag aliases:--http-port→--router-http-port--https-port→--router-https-port--mailhog-port→--mailpit-http-port--mailhog-https-port→--mailpit-https-port--projectname→--project-name--projecttype,--apptype→--project-type--sitename→--project-name--image-defaults→--web-image-default
- Removed
nginx.orgrepository fromddev-webserver, now using nginx from the Debian Trixie repository - Migrated all APT repositories in
ddev-webserverfrom legacy*.listfiles to*.sources(deb822) format
Bug Fixes
- Fixed
ddev heidisqlsupport for multiple databases - Fixed PostgreSQL builds when overriding the database username
- Fixed Windows installer behavior on non-English Windows locales
- Improved Bash detection for non-admin Windows installations
- Fixed
host.docker.internalIP detection for WSL2 mirrored mode with virtual adapters present - Fixed conflicts between
HostWorkingDirandWebWorkingDiraffectingddev npm, thanks to @crowjake - Fixed support for
PKCS#8keys inddev auth ssh - Fixed
ddev snapshotcommand forpostgres:9 - Create Docker volumes only for the configured database type
- Fixed
ddev xdebug,ddev xhprof, andddev blackfirehandlers for the ddev-frankenphp add-on - Fixed
ddev snapshotfailure when run immediately afterddev snapshot restore - Always show the correct project name in
ddev mutagen st, thanks to @agviu - Warn about non-persistent changes when using
ddev composer self-updateandddev composer global - Added support for
COMPOSER_NO_SECURITY_BLOCKING=1inddev composer - Run
post-create-project-cmdfor plugin events inddev composer create-project - Improved
log-stderr.shreporting duringddev start - Skip poweroff prompts when containers are already stopped during version upgrades
- Fixed database port type in TYPO3 settings, thanks to @BreathCodeFlow
- Detect and warn about multiple global config directories during
ddev start
Minor Updates
- PHP 8.3.30, 8.4.17, and 8.5.2
- Docker Compose v5.0.2
- Updated Generic webserver quickstart
- Add
APP_FULL_BASE_URLfor CakePHP, thanks to @ajibarra - Updated Lagoon provider instructions with sync configuration, thanks to @froboy
- Added Cloudflare WARP networking instructions, thanks to @lguigo22
- Updated Ibexa DXP installation steps, thanks to @adriendupuis
- Added troubleshooting guidance for endpoint security interfering with Xdebug, thanks to @joelpittet
- Replaced
github.com/docker/dockerwithgithub.com/moby/moby/clientandgithub.com/moby/moby/api
What's Changed
v1.24.10
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux: Use
sudo apt-get update && sudo apt-get install ddev, see apt/yum installation - Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.10.exe; you can run it for install or upgrade.
- Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous Docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
⚠️ Docker Compose requires newer Docker Buildx on Linux
Error:
compose build requires buildx 0.17 or later
This is caused by upstream change.
Solution: Upgrade Docker using https://docs.docker.com/engine/install/
Note
This is a bugfix release. A regression in v1.24.9 prevented DDEV from updating the /etc/hosts file in CI environments (e.g., GitHub Actions) when using custom project TLDs:
- v1.24.10 reverts the change "Non-interactive mode now forced in non-tty environments"
Highlights
- Support for PHP 8.5.0 RC 3 (note: some extensions are not yet available: apcu, imagick, memcached, redis, uploadprogress, xdebug, xhprof, xmlrpc, yaml)
- Support for PostgreSQL 18
- Automatic HTTP/S communication between DDEV projects - no need to manually configure
external_links - Option to omit project names in
.ddev/config.yamlby default withddev config global --omit-project-name-by-default=true- useful when working with multiple Git worktrees - Auto-discovery of
PLATFORM_PROJECTandPLATFORM_ENVIRONMENTfrom existing config for Upsun Flex and Upsun Fixed (Platform.sh) provider integrations
Features
- New
ddev utility diagnosecommand for quick diagnostics on your DDEV installation and current project - New
ddev add-on searchcommand, thanks to @AkibaAT - New
ddev xdebug infocommand to displayxdebug_info()output - Customize
ddev describeoutput using thex-ddev.describe-*extensions - useful for add-ons - Change
ddev sshshell using thex-ddev.ssh-shellextension - useful for add-ons - New
--user/-uflag forddev execandddev ssh exechooks now support theuserfield- New
pre-shareandpost-sharehooks. This can help change the required URL forddev sharein CMSs like WordPress and Magento2. - PostgreSQL connection support in
ddev heidisql, thanks to @raphaelportmann - Show failed container logs on project start by running
DDEV_DEBUG=true ddev start - Enhanced
composer_rootsupport for apptypedetection in CakePHP, Craft CMS, Laravel, Magento 2, Shopware 6, and Symfony, thanks to @vanWittlaer for initial PR for Shopware 6 - Silence warnings about custom configuration files in the
.ddevdirectory by adding#ddev-silent-no-warnto the file. Documentation
Bug Fixes
- PostgreSQL now runs as container user (mirrored from host user) instead of
postgres:postgres ddev describenow works with stopped or broken containers- Improved support for
DDEV_*environment variables in PHP-based add-ons APP_DEFAULT_LOCALEis no longer overridden in CakePHP, thanks to @tyler36- Removed hardcoded
--server-id=0parameter from MySQL/MariaDB startup, thanks to @cyppe - Fixed
docker-composewarnings onddev startwhen project root.envfile contains dollar signs ddev add-on getnow retries without authentication on invalid GitHub token- Debug and verbose output now suppressed when using
--json-output/-jflag - Improved container username sanitization with better fallback handling
- Fixed
blackfire-phpinstallation for older PHP versions - Fixed bug with broken label in Mutagen volume when path to Docker socket is too long
- Fixed intermittent hang in
ddev auth sshwhen SSH key is password-protected - Fixed hang in
ddev starton macOS when temp directory permissions are broken after macOS upgrade (fixed indocker-compose)
Internal Improvements
- PHP 8.1 no longer preinstalled in ddev/ddev-webserver to reduce image size
- Native ARM builder now used for building DDEV Docker images, thanks to @AkibaAT
ddev utilityis now the primary command (ddev debugmoved to alias)- Healthcheck added to ddev/ddev-xhgui image
- Linux tests now run separately instead of in matrix, allowing single test restarts on failure
- Improved support for
CI=truein GitHub Actions - Vite setup documentation migrated into DDEV docs, thanks to @mandrasch for continuous support on the blog article
- Improved quickstarts code block formatting to resolve copy/paste issues in some terminals
- Added
docker-buildxdependency for AUR installation - Internet detection now uses
one.one.one.oneinstead oftest.ddev.site - Replaced
GITHUB_OWNERwithDDEV_GITHUB_OWNERin https://ddev.com/install.sh - Switched to lightweight debian-12 image for GitHub Codespaces
- Removed Gitpod configuration (service is no longer available)
Minor Updates
- PHP 8.3.27, 8.4.14, and 8.5.0 RC 3
- Docker Compose v2.40.3
- Updated quickstart for Moodle 5.1
What's Changed
- fix: make install_ddev_head.sh install all binaries [skip ci] by @stasadev in #7794
- fix: write download result to stderr for docker-compose and mutagen [skip ci] by @stasadev in #7792
- fix: don't assume non-interactive mode for CI=true or non-tty, fixes #7790 by @stasadev in #7791
- build(docker): bump images to v1.24.10 for release by @stasadev in #7793
- build: add mkcert to artifacts, for #7794 by @stasadev in #7796
Full Changelog: v1.24.9...v1.24.10
v1.24.9
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux: Use
sudo apt-get update && sudo apt-get install ddev, see apt/yum installation - Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.9.exe; you can run it for install or upgrade.
- Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous Docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
⚠ Warning
DDEV v1.24.9 release introduced a regression affecting CI environments (e.g., GitHub Actions) when using custom project TLDs. Do not use v1.24.9 in CI. Upgrade to v1.24.10 instead. Local-only users are unaffected.
Highlights
- Support for PHP 8.5.0 RC 3 (note: some extensions are not yet available: apcu, imagick, memcached, redis, uploadprogress, xdebug, xhprof, xmlrpc, yaml)
- Support for PostgreSQL 18
- Automatic HTTP/S communication between DDEV projects - no need to manually configure
external_links - Option to omit project names in
.ddev/config.yamlby default withddev config global --omit-project-name-by-default=true- useful when working with multiple Git worktrees - Auto-discovery of
PLATFORM_PROJECTandPLATFORM_ENVIRONMENTfrom existing config for Upsun Flex and Upsun Fixed (Platform.sh) provider integrations
Features
- New
ddev utility diagnosecommand for quick diagnostics on your DDEV installation and current project - New
ddev add-on searchcommand, thanks to @AkibaAT - New
ddev xdebug infocommand to displayxdebug_info()output - Customize
ddev describeoutput using thex-ddev.describe-*extensions - useful for add-ons - Change
ddev sshshell using thex-ddev.ssh-shellextension - useful for add-ons - New
--user/-uflag forddev execandddev ssh exechooks now support theuserfield- New
pre-shareandpost-sharehooks. This can help change the required URL forddev sharein CMSs like WordPress and Magento2. - PostgreSQL connection support in
ddev heidisql, thanks to @raphaelportmann - Show failed container logs on project start by running
DDEV_DEBUG=true ddev start - Enhanced
composer_rootsupport for apptypedetection in CakePHP, Craft CMS, Laravel, Magento 2, Shopware 6, and Symfony, thanks to @vanWittlaer for initial PR for Shopware 6 - Silence warnings about custom configuration files in the
.ddevdirectory by adding#ddev-silent-no-warnto the file. Documentation
Bug Fixes
- PostgreSQL now runs as container user (mirrored from host user) instead of
postgres:postgres ddev describenow works with stopped or broken containers- Improved support for
DDEV_*environment variables in PHP-based add-ons APP_DEFAULT_LOCALEis no longer overridden in CakePHP, thanks to @tyler36- Removed hardcoded
--server-id=0parameter from MySQL/MariaDB startup, thanks to @cyppe - Fixed
docker-composewarnings onddev startwhen project root.envfile contains dollar signs ddev add-on getnow retries without authentication on invalid GitHub token- Debug and verbose output now suppressed when using
--json-output/-jflag - Non-interactive mode now forced in non-tty environments
- Improved container username sanitization with better fallback handling
- Fixed
blackfire-phpinstallation for older PHP versions - Fixed bug with broken label in Mutagen volume when path to Docker socket is too long
- Fixed intermittent hang in
ddev auth sshwhen SSH key is password-protected - Fixed hang in
ddev starton macOS when temp directory permissions are broken after macOS upgrade (fixed indocker-compose)
Internal Improvements
- PHP 8.1 no longer preinstalled in ddev/ddev-webserver to reduce image size
- Native ARM builder now used for building DDEV Docker images, thanks to @AkibaAT
ddev utilityis now the primary command (ddev debugmoved to alias)- Healthcheck added to ddev/ddev-xhgui image
- Linux tests now run separately instead of in matrix, allowing single test restarts on failure
- Improved support for
CI=truein GitHub Actions - Vite setup documentation migrated into DDEV docs, thanks to @mandrasch for continuous support on the blog article
- Improved quickstarts code block formatting to resolve copy/paste issues in some terminals
- Added
docker-buildxdependency for AUR installation - Internet detection now uses
one.one.one.oneinstead oftest.ddev.site - Replaced
GITHUB_OWNERwithDDEV_GITHUB_OWNERin https://ddev.com/install.sh - Switched to lightweight debian-12 image for GitHub Codespaces
- Removed Gitpod configuration (service is no longer available)
Minor Updates
- PHP 8.3.27, 8.4.14, and 8.5.0 RC 3
- Docker Compose v2.40.3
- Updated quickstart for Moodle 5.1
What's Changed
- build(aur): add docker-buildx dependency by @stasadev in #7637
- docs: Merge AI instruction files AGENTS.md CLAUDE.md copilot-instructions.md, symlink, fixes #7632 [skip ci] by @rfay in #7644
- docs(faq): remove traefik config when changing project's name, for #7638 by @ara303 in #7639
- chore(deps): update vendor to current, fixes #7624 by @rfay in #7643
- fix(upsun): upsun should resume paused environment at start [skip buildkite] by @rfay in #7650
- feat(docker): auto HTTP/S communication via network aliases instead of external_links by @stasadev in #7642
- test: fix TestNetworkAliases, fixes #7657 by @stasadev in #7658
- feat: enhance PHP addon environment with DockerEnv() integration by @rfay in #7651
- test(buildkite): group log output by
--- RUNby @rfay in #7645 - feat: Update AGENTS.md to reference organization-wide patterns by @rfay in #7659
- fix(cakephp): do not override APP_DEFAULT_LOCALE by @tyler36 in #7653
- fix(hack-postgres): hack postgres client since postgresql-client:18 is misbehaving, for #7661 by @rfay in #7663
- fix(postgres): uninstall postgresql-client with its dependencies, for #7663 by @stasadev in #7665
- docs: platform.sh->upsun name changes, fixes #7654 by @rfay in #7673
- feat(warnings): Allow silencing warnings about custom config files, for #7638 by @rfay in #7660
- feat(test-ddev): add more distro info and default shell to ddev debug test by @rfay in #7666
- feat(postgres): Support postgres:18, fixes #7661 by @rfay in #7662
- feat: add
ddev add-on searchsubcommand, fixes #7491 by @AkibaAT in #7554 - feat(db): remove the hardcoded --server-id=0 parameter from MySQL startup, fixes #6768 by @cyppe in #7608
- chore(buildkite): add DDEV_GITHUB_TOKEN for DDEV_RUN_GET_TESTS and don't run tests on skip by...
v1.24.8
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux: Use
apt install ddevorapt upgrade ddevsee apt/yum installation - Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.8.exe; you can run it for install or upgrade.
- Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous Docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
⚠️ Docker Buildx is now required for Docker Compose
Warning:
Docker Compose is configured to build using Bake, but buildx isn't installed
Error:
fork/exec ~/.docker/cli-plugins/docker-buildx: no such file or directory
Docker Compose changed its default builder to Bake in v2.37.0.
DDEV v1.24.7 and below used older Docker Compose versions that relied on the legacy builder, but v1.24.8 uses a newer Docker Compose version that defaults to Bake, which requires Docker Buildx.
Solution: Ensure Docker Buildx is installed on your system. Most modern Docker installations include Buildx by default, but if you encounter this error, you may need to update Docker or manually install the Buildx plugin.
⚠️ Pantheon provider changes
DDEV v1.24.8 provides .ddev/providers/pantheon.yaml by default, which means if you already have this file with a #ddev-generated line inside, it will be overridden on upgrade:
- See the configuration changes directly in
.ddev/providers/pantheon.yaml - Learn how to set the
PANTHEON_SITEandPANTHEON_ENVIRONMENTvariables in Pantheon Integration.
If you want to keep using .ddev/providers/pantheon.yaml from DDEV v1.24.7 and below:
- Remove the
#ddev-generatedline from your existing file and commit the change to git. DDEV will then leave your customized configuration untouched. - Or rename it to
.ddev/providers/<anything>.yaml, for example.ddev/providers/staging.yaml, and use it withddev pull staging.
Highlights
- Experimental support for add-ons written primarily in PHP
ddev add-on getcan now automatically download add-on dependenciesddev add-on get <your **PRIVATE** GitHub repo>: Support forDDEV_GITHUB_TOKENas a bearer token for GitHub downloads and private GitHub add-ons- Support for alternative GitHub token environment variables:
DDEV_GITHUB_TOKEN(highest priority),GH_TOKEN(lower priority thanDDEV_GITHUB_TOKEN),GITHUB_TOKEN(lowest priority) - Parallel Docker image pulls for faster performance, thanks to @glensc for the idea
- Improved Pantheon provider support,
.ddev/providers/pantheon.yamlprovided by default - Upsun support for multiple apps and multiple databases
- https://docs.ddev.com/ is now the canonical documentation source (replaces https://ddev.readthedocs.io/)
- Dynamic DDEV project sponsorship information if provided once a day on
ddev start.
Features
ddev debug download-images --allnow pulls all images for all projectsddev heidisqlnow works on Linux, thanks to @punkrock34- New
ddev npxglobal command, thanks to @dragonwize host.docker.internalnow available in all containers, not justweb- Pantheon provider now always pulls current upstream database (instead of a backup) and uses the Terminus rsync plugin for file push, thanks to @danny2p
- Traefik healthcheck extended to validate file routers and detect config errors
- Improved support for
ddev config global --no-bind-mountswith automated testing - Manual testing with macOS 26 Tahoe (beta) shows no obvious problems; All Docker providers were casually tested.
Bug Fixes
- Fix non-working
ddev-hostnamefor Homebrew installations on Linux - Add missing ephemeral port handling to XHGui service, thanks to @AkibaAT
- Allow
.DS_Storefiles inddev composer create-project - Fix
ddev describeto show exposed ports correctly on new Docker Desktop versions - Fix nginx configuration for Backdrop routes conflicting with directories
- Use stable branch for
magerunautocompletion script - Don't edit Laravel database config in
.envwhen no database is present, thanks to @cyppe - Remove obsolete PHP 8.4
php.iniconfiguration, thanks to @kaystrobach for the report - Improve handling of "Failed to copy script" errors in the Windows installer
Internal Improvements
- Major refactoring of internal Docker logic to reduce API calls and improve error handling
- Set 20-minute download timeout for
docker-composeand retry with doubled timeout on context deadline exceeded - Remove
docker context inspectcalls from eachddevcommand and use the Docker CLI API ddev auth sshnow uses the Docker API instead ofdocker runand supports stdin- Better reporting of MariaDB/MySQL/PostgreSQL client installation failures; removed download timeouts
- Replace the Docker image
busybox:stablewithddev/ddev-utilities:latestfor internal use
Minor Updates
- PHP 8.3.25 and 8.4.12
- Xdebug 3.4.5
- Docker Compose v2.39.3
- Add SVG support to TYPO3 nginx rewrite rules, thanks to @dhuf
- Disable
innodb_use_native_aiofor MariaDB 10.6 (upstream change) - Forward
*_PROXYandDDEV_*environment variables forrootuser inwebcontainer - Add DDEV version output to
ddev describe, thanks to @tomasnorre - Add warnings for empty pull/push operations in hosting providers
What's Changed
- docs: Add CLAUDE.md to provide general prompts about behavior by @rfay in #7467
- fix: Allow .DS_Store when doing ddev composer create-project [skip ci] by @rfay in #7469
- ci: install
ddevon Windows before test by @stasadev in #7471 - refactor: use
compose-spec/compose-go/v2forfixupComposeYamlby @stasadev in #7422 - test: add a no-interaction flag to the install command in ibexa bats file by @rpkoller in #7479
- docs: note about
Flagsannotation with unknown flags, for #7451 by @stasadev in #7478 - feat: update Pantheon provider to use environment variables, fixes #4760 by @rfay in #7475
- docs: Fix links pantheon.yaml.example -> pantheon.yaml by @rfay in #7481
- fix: Attempt to resolve windows installer problems with 'Failed to copy script', fixes #7485, for #7477 by @rfay in #7493
- docs: explain how to make
buildstage indocker-compose.*.yamlwork offline by @stasadev in #7480 - feat: extend Traefik healthcheck to validate file routers and config errors, fixes #6463, fixes #6553 by @stasadev in #7442
- feat: parallel
docker-compose pull, improveddev debug download-images, fixes #7163 by @stasadev in #7483 - test: ngrok broke their installation moving to bookworm, fix it by @rfay in #7501
- build: use ddev/ddev-utilities instead of busybox, fixes #7499 by @rfay in #7500
- fix: Update obsolete WSL2 install scripts to reflect new ddev-wsl2 and not needing ddev.exe, fixes #7464 [skip ci] by @rfay in #7474
- ci: enforce conventional commits format for PR titles [skip buildkite] by @rfay in #7513
- docs(claude): enhance CLAUDE.md with GitHub workflow guidance [skip buildkite] by @rfay in #7497
- docs(wsl): add
wsl --updatecommand for Windows by @adiati98 in #7476 - refactor: add svg to rewrite rule for TYPO3 by @dhuf in #7482
- ci(pr-check): loosen start and middle rules for message [skip ci], for #7513 by @stasadev in #7515
- feat(sponsorship): add ability to download sponsorship data and other generic data, for #6892 by @rfay in #7502
- chore: revert 3 github copilot commits that it (I) shouldn't have done [skip ci] by @rfay in #7517
- fix(ddev-hostname): sudo can't find ddev-hostname in linuxbrew, fixes #7510 by @rfay in #7512
- chore(localdev): add path management to .envrc [skip ci] by @rfay in #7516
- fix(traefik): improve router port discovery and optimize YAML writes, fixes ddev/ddev-mongo#24 by @stasadev in #7507
- build(deps): bump actions/checkout from 4 to 5 by @dependabot[bot] in #7521
- build(direnv): Make direnv .envrc idempotent so it doesn't do all that work all the time by @rfay in #7520
- build(mariadb): turn off innodb_use_native_aio for mariadb:10.6 b...
v1.24.7: Windows Installer, MariaDB 11.8
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux: Use
apt install ddevorapt upgrade ddevsee apt/yum installation - Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.7.exe; you can run it for install or upgrade.
- Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous Docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights
- Windows Installer handling Traditional Windows, WSL2/Docker CE, and Docker/Rancher Desktop. Read more, with video
- Support added for MariaDB 11.8 LTS,
ddev config --database=mariadb:11.8 - New
ddev-hostnamebinary for hosts editing (with improved elevation/escalation technique) (gsudois no longer required on Windows, andddev.exeinstallation is no longer required on Windows WSL2. Read more - New Linux
ddev-wsl2package is built specifically for WSL2 and includes Windows-side binaries, so separate upgrading of Windows-side binaries is not needed - WSL2 Mirrored Mode now has automated testing
- New minimally supported Docker providers:
- Docker Desktop for Linux - has had limited manual testing only; prefer the documented
docker-ceinstallation - Rancher Desktop for Windows - has had limited manual testing only; currently the only open-source provider on traditional Windows
- Docker Desktop for Linux - has had limited manual testing only; prefer the documented
- It's recommended to run
ddev delete imagesafter the upgrade
Breaking Changes
- If you rely on
## Flagsannotation in custom commands, there is a change: unknown flags will no longer be parsed and will causeError: unknown flagorError: unknown shorthand flag. Either define all possible flags explicitly or remove the## Flagsannotation.
Features
- Enhanced Docker images cleanup in
ddev delete images,ddev delete,ddev clean - Shell completion support for flags in
ddev configandddev config global - New
DDEV_USERenvironment variable for use in custom.ddev/docker-compose.*.yamlfiles ddev launchin WSL2 works without installingxdg-utils(which can be safely removed on existing installations after update)- Support for
NO_COLORvariable, see UsingNO_COLORInside Containers - Return real exit code from
ddev execand add quiet-qflag to it, thanks to @andreashager
Bug Fixes
- Fix
ddev composer create-projectto acceptstdin - Remove unused Node.js version cache in
ddev-global-cacheDocker volume, thanks to @lozcalver - Add overrides from all
.ddev/config.*.yamlfiles to.DdevProjectConfig(used in Go templates, see example) - Make
--json-output/-jwork as expected for debug/verbose output. - Fix issue where the
dbcontainer couldn't restart alone when extra config was present in.ddev/mysql/*.cnf, thanks to @das-peter
Minor Updates
- PHP 8.3.23 and 8.4.10
- Xdebug 3.4.4
docker-composev2.38.2- Update
debian-archive-keyringfor EOL database images (mysql:5.5,mysql:5.6,postgres:9,postgres:10,postgres:11) - Display user defined
router-compose.*.yamlandssh-auth-compose.*.yamlduringddev start - Align Craft CMS quickstart with official docs, thanks to @AugustMiller
- Normalize default values in
ddev help configandddev help config global
What's Changed
- build: apply more staticcheck rules from golangci-lint, fixes #7155 by @stasadev in #7317
- docs: trailing whitespace on template by @hanoii in #7321
- build: update debian-archive-keyring for archived debian repos, fixes #7320 by @stasadev in #7324
- docs: use latest markdownlint, update "here" links by @stasadev in #7327
- feat: prune orphaned Node.js versions after install, fixes #7325 by @lozcalver in #7326
- docs: add tip on initial PhpStorm plugin setup by @stasadev in #7331
- refactor: improve message about missing docroot on
ddev startby @stasadev in #7332 - docs: clarify instructions for using PhpStorm inside WSL2 by @pbowyer in #7333
- fix: make
ddev composer create-projectwork with stdin by @stasadev in #7336 - docs: update
vendor/bin/composerexamples, for #6772 by @stasadev in #7344 - docs: align Craft CMS quickstart with official documentation by @AugustMiller in #7323
- docs: update ngrok link by @tyler36 in #7359
- feat: display user-defined
router-compose.*.yamlonddev startby @stasadev in #7355 - test: update check for starter page in Silverstripe CMS by @stasadev in #7368
- fix: Allow Docker Desktop for Linux (DDFL) but warn about it, fixes #7307 by @rfay in #7363
- build: Update google/go-github to v72, remove obsolete dependencies, replaces #7369 by @rfay in #7370
- feat: add
DDEV_USERenv var forwebcontainer user, sync env tests with docs by @stasadev in #7365 - feat: Support new LTS MariaDB 11.8 by @rfay in #6983
- refactor: clarify comment on legacy PostgreSQL, for #7324 by @stasadev in #7382
- build: use yaml/go-yaml instead of unmaintained yaml.v3, fixes #7280 by @rfay in #7381
- feat: add shell completion for
ddev configandddev config globalby @stasadev in #7356 - docs: improve xhgui documention, fixes #7376 by @michaellenahan in #7377
- fix: Remove COMPOSE_CONVERT_WINDOWS_PATHS to make Rancher Desktop (Windows) work by @rfay in #7375
- build: bump ddev-webserver and ddev-traefik-router, for #7282 by @stasadev in #7378
- test: Add testing for wsl2 mirrored networking, fixes #7379 by @rfay in #7380
- test: remove
TestCmdAddonleftovers in~/.ddevby @stasadev in #7387 - feat: display user-defined
ssh-auth-compose.*.yamlonddev startby @stasadev in #7388 - feat: improve images cleanup in
ddev delete images,ddev delete,ddev clean, fixes #5073, fixes #7201 by @stasadev in #7151 - refactor: normalize defaults in
ddev help configandddev help config global, update docs by @stasadev in #7386 - build: remove go-homedir, fixes #7366 by @rfay in #7390
- test: use
mainfor setup-homebrew action instead ofmasterby @chenrui333 in #7395 - build: upgrade mapstructure to v2 by @dolmen in #7396
- test: use bats-core/bats-core homebrew tap instead of kaos by @rfay in #7405
- fix: treat argument as literal in
ddevcddespite leading dash by @stasadev in #7401 - fix: make DdevProjectConfig include overrides, fixes #7154 by @stasadev in #7397
- feat: Improve elevation/escalation for hosts editing, including WSL2, fixes #6440, fixes #5324 by @rfay in #7392
- test: Pin umbrelladocs/[email protected] temporarily to sort out failures [skip buildkite] by @rfay in #7411
- docs: Improve windows install docs by @rfay in #7410
- fix: make xdg-utils optional, use explorer.exe on WSL2 [skip buildkite] by @rfay in #7402
- test: Ignore existing golangci-lint/revive package complaints by @rfay in #7415
- ci: use
skip-package-name-checks, pingolangci-lintto v2.2.1, removeonly-new-issues, for #7415 by @stasadev in #7416 - build: bump umbrelladocs/action-linkspector from 1.2.5 to 1.3.5 by @dependabot[bot] in #7417
- fix: route all logging through
outputto respect--json-outputby @stasadev in #7403 - docs: add blog and add-on registry to navigation by @stasadev in #7427
- build: Use new cooldown to slow dependabot updates [skip ci] by @rfay in #7425
- feat: add
NO_COLORvariable support, fixes #7058 by @stasadev in #7419 - refactor: centralize table style configuration by @stasadev in #7434
- fix: use
output.UserOutfor JSON output, retry on invalid input in interactive `ddev config...
v1.24.6
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux or WSL2: Use
apt install ddevorapt upgrade ddevsee apt/yum installation. - Traditional Windows: Use
choco upgrade -y ddev, or download the ddev_windows_installer below. - Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights
This is a bugfix release. There were several regressions in v1.24.5 that needed some work:
- Increase timeout for downloading docker-compose on slower networks.
- Fix support for TYPO3 v12 and below (adding support for TYPO3 v14 broke some nginx routing).
- Fix Craft CMS problem with passing values from
.ddev/.env.webtowebcontainer. - Fix broken
.ddev/.gitignorefile for Craft CMS.
Minor Updates
- Add checks for "generic" webserver without 80/443 ports.
- Make "generic" webserver work with busy 80/443 ports.
- Bump
docker-composeto v2.36.1.
Otherwise, same features as in v1.24.5.
What's Changed
- build: update brew instructions for old formula, fixes #7297 by @stasadev in #7295
- fix: change download timeout to 5 minutes instead of 20s, fixes #7298 by @rfay in #7300
- fix: Make sure env-type settings are populated before start, don't override
.ddev/.gitignorefile, for #7236 by @rfay in #7286 - fix: make TYPO3 nginx config work with TYPO3 v12, fixes #7299, for #7230 by @stasadev in #7301
- build: bump docker-compose to v2.36.1 by @stasadev in #7311
- test: adding quickstarts for typo3 v13 and v12 plus bats tests by @rpkoller in #7302
- feat: make generic webserver work with ephemeral ports by @stasadev in #7171
- fix: add checks for "generic" webserver without 80/443 ports, for #6935, fixes #7313 by @stasadev in #7306
- docs: fix indentation for code block by @stasadev in #7314
- build: bump images to v1.24.6 for release, fixes #7310 by @stasadev in #7315
Full Changelog: v1.24.5...v1.24.6
v1.24.5
Note: This release contains regressions. Update to the latest version for fixes.
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux or WSL2: Use
apt install ddevorapt upgrade ddevsee apt/yum installation - Traditional Windows: Use
choco upgrade -y ddev, or download the ddev_windows_installer below. - Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
⚠ Homebrew users with old drud formula only
If you can't update or remove the old ddev formula from drud, use this:
rm -rf "$(brew --repo drud/homebrew-ddev)"
brew uninstall -f ddev
brew install ddev/ddev/ddevHighlights
- Improved (experimental) support for WSL2 "Mirrored" Networking. Fixed port waiting timeouts (thanks to @marvinhinz) and added automatic Xdebug connection configuration.
If you're using Windows WSL2 with "Mirrored" Networking, set the experimentalhostAddressLoopback=truefeature. - Resolved "unknown" state caused by PhpStorm's use of
docker-compose runfor one-off containers. The DDEV Integration plugin will no longer fail in this case. Edge cases with Node remain; see JetBrains issue WEB-64513. - VPN or Proxy configuration with DDEV? A dedicated Special Network Configurations docs page is now available.
- Want to learn more about DDEV? AI-generated insights available at ddev/ddev | DeepWiki.
Features
- Downloaded Mutagen and
docker-composebinaries now pass SHA checksum verification with retry logic. - New environment variables:
DDEV_PRIMARY_URL_PORT,DDEV_PRIMARY_URL_WITHOUT_PORT, andDDEV_SCHEME. Thanks to @AkibaAT. DDEV_APPROOTvariable available in thewebcontainer. Thanks to @shelane.- Support for
prepend.Dockerfile*files for multi-stage Docker builds. Thanks to @hanoii. - Improved output of
ddev add-on getand added warning exit code. Thanks to @hanoii. - WordPress
--pathis now added automatically toddev wpwhendocrootis set. Thanks to @pfructuoso from www.nazaries.com. - Craft CMS settings now reside in
.ddev/.env.web;.envis no longer managed by DDEV. - Added shell completion for the
--service(-s) flag inddev exec,ddev logs,ddev ssh,ddev debug rebuild. - Support TYPO3 v14 nginx configuration.
Bug Fixes
- Remove redundant media stanzas from
nginx.conf. Thanks to @barbieswimcrew. ddev xhgui launchnow correctly respects non-default ports. Thanks to @PierrePaul.- Avoid overriding
WP_ENVIRONMENT_TYPEfor WordPress. ddev confignow works with non-default project names inconfig.*.yaml.- Prevent PhpStorm's debug integration from triggering stdin-related connections. Thanks to @AkibaAT.
- PostgreSQL exports now use fast checkpoints to avoid prolonged backup blockages. Thanks to @AkibaAT.
ddev_version_constraintnow supports wildcards like1.24.xand comparison operators like> 1.24.5.- Fixed broken HTTP/HTTPS port resolution. Thanks to @AkibaAT.
Deprecations
ddev composer createis deprecated. Useddev composer create-project.ddev debug capabilitiesis deprecated. Useddev_version_constraintfor project and add-on checks.
Minor Updates
- PHP 8.3.21 and 8.4.7.
docker-composev2.36.0.- Chocolatey removed from automated Windows installation scripts. Thanks to @colans.
- Magento 2 quickstart now uses OpenSearch. Drupal CMS quickstart improved. Thanks to @rpkoller.
- Updated Craft CMS quickstart. Thanks to @timkelty.
ddev startchecks for anindex.*file in docroot and warns if missing (403 errors in browser).- Pimcore quickstart now requires a license due to upstream license change.
What's Changed
- docs: Add missing
sequelacecommand link todatabase-management.mdby @TravisCarden in #7184 - docs: add tip on using per-project API tokens for hosting providers, fixes #7177 by @stasadev in #7183
- fix: ignore curl error in
Dockerfile.testforddev debug testby @stasadev in #7186 - fix: don't wait for one-off containers from PhpStorm, fixes #7146 by @stasadev in #7148
- fix: add timeout for netutil::IsPortActive check for WSL2 with "mirrored networking mode" as opposed to default "NAT mode", fixes #6245 by @marvinhinz in #7166
- fix: nginx.conf should let index.php handle 404 errors for media files by @barbieswimcrew in #7050
- docs: Explain corp vpn and proxy, fixup FAQ, fixes #7048 by @rfay in #7061
- build: stop installing chocolatey, fixes #6636, fixes #6344 [skip buildkite] by @colans in #7049
- fix: XHGui launch command support custom ports, fixes #7181 by @PierrePaul in #7182
- test: fix for magento2 quickstart and bats test, fixes #7191 by @rpkoller in #7192
- docs: fix minor typo in the Grav quickstart by @jgonyea in #7197
- refactor: move
WP_ENVIRONMENT_TYPEto the docs, fixes #7178 by @stasadev in #7179 - fix: make
ddev configwork with project name fromconfig.*.yaml, fixes #7060 by @stasadev in #7062 - docs: Improve buildkite windows setup script run [skip buildkite] by @rfay in #7200
- fix: make sure mutagen agents file is fresh on upgrade, add shasum testing, test shasum for mutagen+docker-compose by @rfay in #7077
- test: make the drupal cms bats test a bit more robust and trustworthy by @rpkoller in #7203
- feat: add DDEV_APPROOT variable to web container and updates documentation, fixes #7198 by @shelane in #7199
- build: switch to official percona release for xtrabackup, fixes #6963 by @rfay in #7207
- fix: disable xdebug trigger for xdebug and xhprof status checks, fixes #6191, fixes ddev/ddev-intellij-plugin#414 by @AkibaAT in #7216
- fix: Use fast checkpoint during postgresql backup, fixes #7098 by @AkibaAT in #7219
- feat: add new envs
DDEV_PRIMARY_URL_PORT,DDEV_PRIMARY_URL_WITHOUT_PORTandDDEV_SCHEME, fixes #7214 by @AkibaAT in #7218 - feat: support prepend.Dockerfile* files for multi-stage builds by @hanoii in #7071
- fix: Improve the output of ArrayToReadableOutput by @rfay in #7222
- docs: Improvements to Zscaler instructions, fixes #7209, fixes #7211 [skip buildkite] by @rfay in #7212
- test: Add TestUploadDirs to verify upload_dirs, fixes #7109 by @rfay in #7224
- feat: add success message for xhgui on and off, fixes #7202 by @rpkoller in #7205
- refactor: Hide ddev debug capabilities, fixes #7174 by @rfay in #7227
- refactor: check for docroot/index.* on start, fixes #7157 by @rfay in #7228
- build: bump actions/setup-python from 5.5.0 to 5.6.0 by @dependabot in #7240
- docs: use ddev composer create-project everywhere, fixes #6920 by @rfay in #7231
- refactor: Add retries to util.Download(), both the SHASUM and the target file by @rfay in #7234
- build: Use some artifacts that we control building windows installer (nsis), fixes #7086 by @rfay in #7229
- test: add timeout to buildkite maintenance, fixes #7176 by @rfay in #7226
- docs: wrap quotes around commands that use the caret symbol by @nmangold in #7237
- docs: Remove --no-interaction from Pimcore, disable test, fixes #7243 by @rfay in #7245
- fix: support TYPO3 v14 nginx configuration, fixes #6944 by @rfay in #7230
- build: Reject the use of
drud/ddev/ddevhomebrew recipe by @rfay in #7244 - build: bump golangci/golangci-lint-action from 7 to 8 by @dependabot in #7264
- fix: add BASE_IMAGE arg before everything else, for #7071 by @hanoii in #7258
- fix: allow status code 429 for linkspector by @stasadev in #7270
- fix: WSL2 install script should wait longer for DDEV Windows installer to complete [skip ci] by @rfay in #7269
- refactor: Make DownloadFile() retry logic more robust, improve curling in Makefile by @rfay in #7252
- fix: correct warning output formatting (Drupal) and don't try to do exec when not running by @stasadev in #7247
- fix: set `XDEBUG_MODE...
v1.24.4: XHGui for XHProf Profiling
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux or WSL2: Use
apt install ddevorapt upgrade ddevsee apt/yum installation - Traditional Windows: Use
choco upgrade -y ddev, or download the ddev_windows_installer below. - Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights:
- Sponsored by the TYPO3 Community: Integrate XHGui into DDEV, enable it with
ddev poweroff && ddev config global --xhprof-mode=xhgui, then useddev xhguiin any of your projects. - DevDb VS Code extension: First class support for DDEV, thanks to @damms005
Features:
- Optional Docker Compose profiles: You can now start projects with specific profiles using
ddev start --profiles=list,of,profiles - Backdrop: a new quickstart based on the official add-on, thanks to @laryn
- New
MutagenSyncannotation: Custom commands that alter the host system can now use this annotation to help synchronize changes.
Bug Fixes:
- DDEV router now works properly behind proxies (regression from v1.24.0).
- Show router URLs in
ddev describeandddev listwhen default 80/443 port is busy (regression from v1.24.3). - Correct status color formatting in
ddev describeandddev list. - Remove outdated Traefik images with
ddev delete images, thanks to @rpkoller - Resolve misleading errors in
ddev debug testwhen run outside the project root. - Fix invalid
upload_dirson traditional Windows setups. - Sanitize
~/.ddev/project_list.yamlto prevent panic. - Make the
DDEV_PAGERenvironment variable optional to prevent it from breakingwp-clioutput. - Prevent overwriting the
genericproject type when runningddev config --update. - Update
DATABASE_URLto usecharset=utf8mb4in MySQL and MariaDB for Symfony projects, thanks to @RubenColpaert - Delete third-party built images on
ddev delete.
Minor Updates:
- PHP 8.3.19 and 8.4.5
- Fix displaying for
#ddev-descriptionstanza in add-on install actions, thanks to @hanoii - Show custom
config.*.yamlonddev start, thanks to @hanoii - Laravel 12 quickstart with tests.
- Update DDEV brand logos for dark theme.
- Update all Go vendor dependencies.
- Add quickstart tests for Magento 2, CakePHP, ExpressionEngine, Kirby CMS, Symfony, Silverstripe CMS, CraftCMS, and Statamic, thanks to @rpkoller
- Add OpenMage/Magento 1 quickstart test and split it from Magento 2, thanks to @sreichel
What's Changed
- fix: the
#ddev-descriptionstanza in add-on install actions not showing if it's the first line by @hanoii in #7022 - feat: add
go-versiontoddev version, fixes #7021 by @stasadev in #7023 - feat: Add live link to Discord by @tyler36 in #7042
- docs: remove the recommendation not to use colima by @rfay in #7025
- build: fix new mkdocs failure on git by @rfay in #7046
- refactor: use
ddev composer create-projectin the code, for #6920 by @stasadev in #7027 - feat: Laravel 12 quickstart with tests by @stasadev in #7028
- fix: delete traefik images based on the pattern used for ddev-dbserver and use constants for targeting, fixes #6326 by @rpkoller in #7036
- feat: Support docker compose optional profiles, allow
ddev start --profiles=list,of,profiles, for #6894 by @rfay in #7007 - fix: explicitly ping 127.0.0.1 in Traefik healthcheck to make proxying work, fixes #7044, fixes #6931 by @stasadev in #7045
- fix: remove refreshenv from WSL2 install scripts, fixes #7024 [skip ci] by @rfay in #7026
- docs: add Backdrop-specific config considerations. by @laryn in #7037
- build: don't use go 1.24 yet until docker issues resolved, fixes #7051 by @rfay in #7057
- test: Run quickstart tests with mutagen enabled [skip buildkite] by @rfay in #7017
- docs: Improve troubleshooting docs for hosting by @rfay in #7056
- build: skip testing with buildkite if diff is not from that branch by @stasadev in #7064
- docs: update mkdocs logo, update word/figurative mark svg for dark mode by @stasadev in #7055
- build: put both git and ssh in both webserver images, fixes #7054 by @rfay in #7063
- build: Use specific binfmt for qemu in push-tagged-image [skip ci] by @rfay in #7070
- build: use special qemu binfmt version for db push [skip ci] by @rfay in #7073
- fix: add check for app in
ddev debug testand run it from approot by @stasadev in #7072 - build: Update go mod files except docker, replaces #7074 by @rfay in #7078
- test: don't load 1password secrets if not available [skip buildkite] by @rfay in #7088
- test: Fix secret loading [skip buildkite] by @rfay in #7090
- build: upgrade docker/docker to v28 usages, followup to #7078, fixes #7079 by @rfay in #7081
- docs: Fix pull request title link in pull request template [skip ci] by @rfay in #7097
- test: Add quickstart test for magento2 (by @rpkoller) [skip buildkite] by @rfay in #7082
- test: Disable link check on freedesktop.org since it will be out for a week by @rfay in #7100
- docs: add Wordpress special handling info about wp-cli.yml by @nickchomey in #7080
- docs: add DevDb tip to database management documentation by @damms005 in #7084
- docs: update Windows installation docs to use 'Docker Engine' terminology by @Nick-Hope in #7092
- fix: use filepath for calculateHostUploadDirFullPath, fixes #7065 by @rfay in #7066
- test: simplify the zip based test and quickstart for backdrop based on feedback from @stasadev by @rpkoller in #7106
- test: use a more robust approach downloading the latest zip file (by @stasadev) by @rpkoller in #7104
- test: Bats test for CakePHP composer quickstart by @rpkoller in #7103
- test: bats tests for expression engine and adjustments to its quickstart by @rpkoller in #7101
- test: adding kirby quickstart bats test by @rpkoller in #7099
- fix: remove obsolete references to non-traefik router by @rfay in #7096
- fix: add ddev_nointeractive to common-setup.bash (per @stasadev) by @rpkoller in #7115
- test: attempt to fix the returned 503 error on ee tests [skip buildkite] by @rpkoller in #7114
- test: symfony bats tests by @rpkoller in #7102
- docs: Update quickstart.md to remove Drupal CMS zip file instructions by @phenaproxima in #7119
- test: adding silverstripe quickstart bats test by @rpkoller in #7112
- test: craftcms bats test by @rpkoller in #7107
- docs: ddev debug rebuild is great for debugging [skip buildkite] by @rfay in #7120
- test: bats test for Statamic Composer quickstart [skip buildkite] by @rpkoller in #7116
- test: add OpenMage/Magento 1 quickstart test and split it from Magento 2, for #7094 by @sreichel in #7091
- feat: show config..yml on ddev start by @hanoii in #7089
- fix: make linkspector ignorePatterns work properly, for #6951 by @stasadev in #7125
- docs: Add docs about configuring browser for HTTPS certificates by @MurzNN in #7075
- test: adjust openmage bats test assertions to the now available demo content by @rpkoller in #7126
- build: remove go toolchain, bump docker library to 28.0.2, for #7057 by @stasadev in #7127
- test: improve
ddev debug testby @stasadev in #7128 - docs: ignore mutagen links in linkspector by @stasadev in #7129
- docs: fix example file name by @stasadev in #7130
- fix: sanitize
~/.ddev/project_list.yaml, fixes #7132 by @stasadev in #7136 - fix: set
NO_PROXY=*in ddev-router to allow internal connections, use default Traefik config file location by @stasadev in https://github.com/ddev/dde...
v1.24.3: Mutagen fix, Generic Webserver Type for Node.js
Installation
We would really appreciate if if you would upgrade to this release soon, especially if you're on macOS, because when you upgrade your Docker provider, the previous version of Mutagen won't work for you.
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux or WSL2: Use
apt install ddevorapt upgrade ddevsee apt/yum installation - Traditional Windows: Use
choco upgrade -y ddev, or download the ddev_windows_installer below. - Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights:
- New
genericweb server type for Node.js: we've introduced quickstarts for this, and we want your feedback! - New SvelteKit and Node.js Web Server quickstart.
- Experimental FrankenPHP quickstart.
- Want to contribute a quickstart for your favorite framework? We've got you covered with this guide.
Recent Docker Issues:
- macOS: Problems with Docker v28.0.0 and Mutagen: Unable to connect to container, "CreateOrResumeMutagenSync Failure", fixed in DDEV v1.24.3, thanks to @xenoscopic for the quick Mutagen bugfix release and @LoganHornbuckle for reporting the issue.
- Linux and Docker v28.0.0: Some users have reported networking issues, though not everyone seems to be affected. See the Moby issue queue for more details.
- Arch Linux and Docker v28.0.0: Intermittent problems with
docker pull, see this issue. - Docker Desktop v4.38.0: Some users have reported slow command execution.
Bug Fixes:
- Fixed a panic regression in v1.24.2 affecting DDEV projects in the parent directories of existing DDEV projects.
- User-defined ports in
.ddev/docker-compose.*.yamlnow respect thebind_all_interfacesconfig option. - Arguments with spaces in
ddev execnow behave as expected (no need to useddev exec --rawanymore). - Added a better validation for
docroot, and nowddev config --docroot=""works as expected.
Minor Updates:
- PHP 8.3.17 and 8.4.4
- Many new quickstart tests, thanks to @rpkoller
- ProcessWire quickstart, thanks to @BernhardBaumrock
- The file
/etc/supervisor/conf.d/mailhog.confinside thewebcontainer renamed to/etc/supervisor/conf.d/mailpit.conf - Apache 2 change: switch from
mpm_preforktompm_event, thanks to @vever001 - nginx change: set
decorate_workers_outputtonoby default, thanks to @atomicptr - Bump minimal recommended Docker version to 25.0 (API 1.44), thanks to @AndrewGearhart
What's Changed
- docs: Update Rancher Desktop buildkite agent setup [skip ci] by @rfay in #6923
- test: prepare for magento2 quickstarts by providing composer secrets [skip ci] by @rfay in #6919
- build: rename mailhog.conf to mailpit.conf by @rfay in #6924
- docs: Fix formatting for staging server in Let's Encrypt [skip ci] by @rfay in #6928
- test: make lima/colima tests work after lima 1.0.4 by @rfay in #6936
- fix: don't panic when running project in not allowed location, fixes #6925 by @stasadev in #6926
- docs: add more examples for testing a PR by @stasadev in #6942
- fix: unset JAVA_HOME to prevent mkcert hang by @rfay in #6940
- feat: Add info about web_extra_exposed_ports and web_extra_daemons to Amplitude instrumentation by @rfay in #6947
- fix: allow
ddev configfor existing parent projects, fixes #6937 by @stasadev in #6941 - test: use linkspector for external links, use mkdocs for internal links, for #6860 by @stasadev in #6951
- build: run golangci-lint only for changed code in PRs by @stasadev in #6954
- build: run linkspector on the main branch, for #6860 by @stasadev in #6953
- build: hide extra output from linkspector [skip ci] by @stasadev in #6952
- docs: Add info on maintaining and testing quickstarts, fixes #6880 by @rfay in #6888
- docs: Add ProcessWire to the Quickstart List by @BernhardBaumrock in #6879
- build: bump actions/setup-python from 5.3.0 to 5.4.0 by @dependabot in #6957
- fix: trim single quotes, double quotes, and spaces from filepath input, fixes #6938 by @stasadev in #6939
- fix: improve error message for invalid env flag, fixes #6949 by @stasadev in #6960
- fix: check snapshot name for valid characters, fixes #6955 by @stasadev in #6956
- feat: Add "generic" webserver type for Node.js and other things like FrankenPHP, fixes #4854, fixes #5655, fixes #4312 by @rfay in #6935
- test: allow a margin of +2 for ephemeral port checks due to flakiness by @stasadev in #6965
- fix: add patch command to hardened prod web image, fixes #6958 by @stasadev in #6959
- feat: bind IP to user-defined ports if not set, fixes #6943 by @stasadev in #6950
- feat: switch apache mpm_prefork to mpm_event, fixes #6966 by @vever001 in #6967
- build: remove custom Xdebug 3.4.1 by @stasadev in #6969
- build: autoload Python and Node deps from Makefile with direnv [skip ci] by @stasadev in #6968
- docs: add MySQL 8.4 to supported databases by @pbowyer in #6971
- feat: change php-fpm setting 'decorate_workers_output' to 'no' by @atomicptr in #6964
- feat: normalize docroot usage in
ddev configby @stasadev in #6962 - build: remove Xdebug 3.2.2 builds for php8.1 and php8.2 by @stasadev in #6976
- build: push tagged images with ubuntu 22.04 [skip ci] by @rfay in #6979
- fix: correct spelling for Xdebug by @stasadev in #6981
- fix: do not show router URL in
ddev listif it's stopped by @stasadev in #6980 - docs: Fix niggling code sample inconsistency in
troubleshooting.mdby @TravisCarden in #6984 - build: go back to normal blackfire packaging, fixes #6078 by @rfay in #6985
- docs: add link for DDEV Add-on Registry, fixes #6383 by @stasadev in #6989
- test: add yes flag to ddev start cmd by @rpkoller in #6996
- test: civicrm bats test by @rpkoller in #6986
- test: grav quickstart bats tests by @rpkoller in #6988
- test: quickstart bats test for ibexa by @rpkoller in #6990
- test: quickstart bats test for moodle by @rpkoller in #6991
- test: bats test for pimcore quickstart by @rpkoller in #6992
- test: shopware quickstart bats test by @rpkoller in #6993
- test: joomla quickstart bats test by @rpkoller in #6997
- test: figure out why buildkite tests are running for quickstart bats tests by @rfay in #6999
- test: add more joomla specific tests [skip buildkite] by @rpkoller in #7000
- fix: add a mutagen sync at the end of the dotenv cmd by @rpkoller in #6994
- fix: handle args with spaces in
ddev exec, don't panic about invalid syntax inexec_raw, fixes #5865 by @stasadev in #6930 - test: run ClearDockerEnv() before tests, fixes #472 by @rfay in #7012
- test: Makefile - try again if curl fails to download something it needs by @rfay in #7009
- docs: change code refs to include info about Backdrop config storage options, fixes #7013 by @laryn in #7014
- refactor: improve docker version checks, set minimum supported docker API to 1.44, fixes #6916 by @AndrewGearhart in #6946
- docs: Remove gitpod/drupalpod from docs, for #6891 [skip buildkite] by @rfay in #6974
- fix: wrap args with spaces in
ddev execwith double quotes instead of using raw, for #6930 by @stasadev in #7006 - test: contao quickstart bats test by @rpkoller in https://github.com/dde...
v1.24.2: MySQL 8.4 support, improved ddev composer create
Installation
See the installation instructions for details, but it's easy:
- macOS:
brew install ddev/ddev/ddevor justbrew upgrade ddev. - Linux or WSL2: Use
apt install ddevorapt upgrade ddevsee apt/yum installation. - Traditional Windows: Use
choco upgrade -y ddev, or download the ddev_windows_installer below. - Consider
ddev delete imagesorddev delete images --allafter upgrading to free up disk space used by previous docker image versions. This does no harm. - Consider
ddev config --autoto update your projects to current configuration.
Highlights:
- Support for MySQL 8.4: DDEV now uses
bitnami/mysqlas the base image formysql:8.x. - Improved argument handling for
ddev composer create: Theddev composer create-projectalias has been added for better usability. - Global DDEV commands available inside the
webcontainer: Commands likeddev xdebug togglecan now be run directly within the web container, e.g., simply usexdebug toggle. - New
ddev mariadbcommand: Theddev mysqlcommand remains available for MariaDB users, but you can now also useddev mariadb. (MariaDB is moving away from havingmysqlin the names of its commands.)
Breaking Changes:
ddev configlocation restriction: You can no longer runddev configfrom the parent directory of a project, preventing accidental setups in incorrect locations.
Behavior Changes:
- Subdirectory support for
ddev config: You can now runddev configin the subdirectories of an existing project, aligning it with other DDEV commands. - Improved database output: The environment variable
PAGER="less -SFX"has been added to both the web and db containers for cleaner database output. You can modify or disable this behavior by settingexport DDEV_PAGER=""outside of DDEV. Thanks to @tyler36.
Bug Fixes:
- OpenSSH certificates for
ddev auth ssh: Fixed missing OpenSSH certificates when usingddev auth ssh. ddev pull acquiafix for multiple databases, thanks to @charginghawk.- A fix for Drupal 7
settings.ddev.phpprevents problems with Mutagen not being able to updatesettings.phpafter doing a Drupal installation. Thanks to @eporama. - The
nginx-site.confwas not being properly updated for projects of typedrupalanddrupal11, causing problems duringupdate.php.
Minor Updates:
- PHP 8.3.16 and 8.4.3.
- A dummy
ddevcommand is available inside thewebcontainer to help users understand the context they're working in. - Laravel Installer quickstart.
- Drupal CMS quickstart, thanks to @rpkoller.
- CiviCRM Standalone quickstart, thanks to @gitressa.
- Repository update: The
masterbranch of theddev/ddevrepository has been renamed tomain. - Quickstarts in docs can now have automated tests, and the Drupal, Backdrop, WordPress, and TYPO3 examples already do, thanks to @rpkoller.
CIstatus added to Amplitude instrumentation, so we can exclude/count usages when projects are run in CI. Thanks to @IndraGunawan.
What's Changed
- test: Add configuration verification tests for mariadb and mysql by @rfay in #6831
- docs: buildkite lima setup needs --mount-writable by @rfay in #6833
- docs: how to add unsupported PHP versions without
ddev config, fixes #6835 by @stasadev in #6836 - docs: Remove run-ddev-on-old-mac from faq by @rfay in #6843
- fix: don't copy Dockerfiles to
*imageBuildfolder, add examples to assets, fixes #6757 by @stasadev in #6810 - fix: mount OpenSSH certificate for
auth ssh, fixes #6832 by @stasadev in #6837 - build: reorganize
ddev-webserverpackages, addvimalternative, fixes #6840 by @wazum in #6839 - feat: accept all args in
ddev composer create, addcreate-projectalias, fixes #6766 by @stasadev in #6784 - feat: Add pager to database output by @tyler36 in #6842
- fix: add CI to instrumentation tags by @IndraGunawan in #6834
- fix: Use bitnami/mysql as base for mysql:8.x images, and support MySQL 8.4, fixes #6241, fixes #6511 by @rfay in #6589
- build: bump go-pretty and x/crypto, fixes #6844 by @rfay in #6849
- fix: remove nfs setup script from install_ddev.sh [skip ci] by @rfay in #6855
- docs: add Laravel Installer quickstart by @stasadev in #6850
- test: Use linkspector instead of markdown-link-check, fixes #6859 by @rfay in #6860
- docs: bump mkdocs/readthedocs dependencies for python 3.13 by @stasadev in #6862
- docs: Update mkdocs installation as docker doesn't work [skip ci] by @rfay in #6864
- docs: Add link to hostnames article on ddev.com by @rfay in #6863
- docs: Add a quickstart for drupal cms by @rpkoller in #6829
- docs: add CiviCRM Standalone to quickstart.md by @gitressa in #6846
- docs: Add database management examples including how to create empty database by @gitressa in #6848
- build: new
ddev mariadbcommand, adjust~/.my.cnfto always useroot, hide some Docker build warnings, fixes #6462 by @stasadev in #6851 - test: Minor updates to linux-setup.sh by @rfay in #6869
- test: get more disk space on hosted runner, switch to ubuntu 24.04, fixes #6865 by @rfay in #6866
- build: dependabot complaint about net/html by @rfay in #6867
- test: Add bats test coverage for backdrop quickstart, for #6222 by @rfay in #6868
- docs: add setup step for macOS test runners (full disk access) [skip ci] by @rfay in #6871
- docs: Update maintained date to 2025 in README [skip ci] by @rfay in #6877
- fix: Make xhprof-prepend.php mount writable, for #3782 by @rfay in #6873
- docs: Add funding.json to apply for funding via floss.fund [skip ci] by @rfay in #6878
- docs: Stop checking stopwords 'just' and 'simply' [skip ci] by @rfay in #6881
- refactor: rename branch master to main, fixes #6476 by @stasadev in #6876
- fix: In acquia.yaml, specify default site source for ddev pull acquia. by @charginghawk in #6874
- feat: disable
ddev configin parent folders of a project, but allow it in subfolders, fixes #6783, fixes #5493 by @stasadev in #6852 - fix: Fix Acquia push, Minor cleanup in provider integrations [skip buildkite] by @rfay in #6883
- fix: DB container: Remove MYSQL_PWD, use ARG in mysql/mariadb Dockerfile, remove OPTIMIZE TABLES, fixes #6886 by @rfay in #6887
- test: Quickstart tests for TYPO3 quickstart by @rpkoller in #6895
- test: Use new ddev/test-typo3 repo for automated testing of typo3 by @rfay in #6896
- docs: replace GOOS and GOARCH for a DDEV_ alternative, for #6752 by @stasadev in #6901
- docs: Improve windows buildkite setup workflow by @rfay in #6889
- docs: change the quickstart repo for typo3 to test-typo3 by @rpkoller in #6904
- feat: override
PAGERwithDDEV_PAGERenv variable, for #6842 by @stasadev in #6900 - refactor: remove outdated
move-issueconfig , fixes #6899 by @tyler36 in #6906 - test: Improve WP quickstart and add wordpress bats tests by @rpkoller in #6897
- test: Add bats test coverage for Drupal Core and Drupal CMS quickstarts by @rpkoller in #6893
- fix: provide a dummy ddev command inside container, allow web commands there, fixes #6574 by @rfay in #6902
- build: bump docker-compose to 2.32.4 by @rfay in #6905
- test: add force flag to the remove cmd and a fixed dl link to the latest version of Drupal CMS by @rpkoller in #6907
- fix: remove noise from
docker-composeon build and reformatddev startoutput, for #6905 by @stasadev in #6909 - test: some tests should skip skippable testsites by @rfay in #6914
- fix: update Drupal 7 settings.ddev.php and settings.php to match Drupal 7.103 by @eporama in #6913
- fix: nginx-site-drupal11.conf wasn't being installed, fixes #6910 by @rfay in #6911
- build: bump images to v1.24.2 for release by @stasadev in #6915
New Contributors
- @charginghawk made their first contribution in #6874
- @eporama made their first contribution in #6913
Full Changelog: v1.24.1...v1.24.2