Thanks to visit codestin.com
Credit goes to Github.com

Skip to content

Releases: ddev/ddev

v1.25.0

03 Feb 14:57
aed5a46

Choose a tag to compare

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
  • Windows and WSL2: Download the Windows Installer; you can run it for install or upgrade. winget install --interactive ddev works 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 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

New defaults

  • Debian Trixie is now the base image for ddev-webserver and ddev-ssh-agent (replacing Debian Bookworm). See Issues to be aware of for Trixie.
    (Some projects with complex Dockerfiles or obsolete webimage_extra_packages may 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

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-cache flag for ddev start and ddev restart (as an alternative to ddev utility rebuild)
  • Improved support for non-Codespaces devcontainers
  • Refactored ddev add-on subcommands with a fallback mechanism to avoid GitHub API rate limits
  • Much faster ddev add-on list and ddev 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_ci and utf8mb4_uca1400_ai_ci as 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: v2 and ruleSyntax: v3 from 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-router is no longer stopped automatically when the last project is stopped, use ddev poweroff to 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_mode changed from "prepend" to "xhgui" but you can easily change it back
  • Removed ddev utility capabilities, use ddev_version_constraint instead in add-ons.
  • Removed NFS support, use Mutagen
  • Removed ddev service, custom services can be installed/uninstalled via ddev add-on
  • Removed ddev nvm, install the ddev-nvm add-on if needed
  • Removed obsolete or non-functional commands and command aliases:
    • ddev restore-snapshot
    • ddev auth pantheon
    • ddev config pantheon
  • Removed obsolete ddev config flags:
    • --mutagen-enabled (use --performance-mode=mutagen)
    • --upload-dir (use --upload-dirs)
    • --db-image, --db-image-default (never documented or used)
  • Removed deprecated ddev config flag 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.org repository from ddev-webserver, now using nginx from the Debian Trixie repository
  • Migrated all APT repositories in ddev-webserver from legacy *.list files to *.sources (deb822) format

Bug Fixes

  • Fixed ddev heidisql support 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.internal IP detection for WSL2 mirrored mode with virtual adapters present
  • Fixed conflicts between HostWorkingDir and WebWorkingDir affecting ddev npm, thanks to @crowjake
  • Fixed support for PKCS#8 keys in ddev auth ssh
  • Fixed ddev snapshot command for postgres:9
  • Create Docker volumes only for the configured database type
  • Fixed ddev xdebug, ddev xhprof, and ddev blackfire handlers for the ddev-frankenphp add-on
  • Fixed ddev snapshot failure when run immediately after ddev 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-update and ddev composer global
  • Added support for COMPOSER_NO_SECURITY_BLOCKING=1 in ddev composer
  • Run post-create-project-cmd for plugin events in ddev composer create-project
  • Improved log-stderr.sh reporting during ddev 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_URL for 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/docker with github.com/moby/moby/client and github.com/moby/moby/api

What's Changed

  • test: Allow overriding ignore expiring keys [skip buildkite] by @rfay in #7803
  • test: Improve TestHasConfigNameOverride so it doesn't leave projects after completion, fixes #7797 by @rfay in #7798
  • test: don't che...
Read more

v1.24.10

04 Nov 17:18
9852029

Choose a tag to compare

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
  • Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.10.exe; you can run it for install or upgrade.
  • 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.

⚠️ 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.yaml by default with ddev config global --omit-project-name-by-default=true - useful when working with multiple Git worktrees
  • Auto-discovery of PLATFORM_PROJECT and PLATFORM_ENVIRONMENT from existing config for Upsun Flex and Upsun Fixed (Platform.sh) provider integrations

Features

Bug Fixes

  • PostgreSQL now runs as container user (mirrored from host user) instead of postgres:postgres
  • ddev describe now works with stopped or broken containers
  • Improved support for DDEV_* environment variables in PHP-based add-ons
  • APP_DEFAULT_LOCALE is no longer overridden in CakePHP, thanks to @tyler36
  • Removed hardcoded --server-id=0 parameter from MySQL/MariaDB startup, thanks to @cyppe
  • Fixed docker-compose warnings on ddev start when project root .env file contains dollar signs
  • ddev add-on get now retries without authentication on invalid GitHub token
  • Debug and verbose output now suppressed when using --json-output/-j flag
  • Improved container username sanitization with better fallback handling
  • Fixed blackfire-php installation 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 ssh when SSH key is password-protected
  • Fixed hang in ddev start on macOS when temp directory permissions are broken after macOS upgrade (fixed in docker-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 utility is now the primary command (ddev debug moved 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=true in 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-buildx dependency for AUR installation
  • Internet detection now uses one.one.one.one instead of test.ddev.site
  • Replaced GITHUB_OWNER with DDEV_GITHUB_OWNER in https://ddev.com/install.sh
  • Switched to lightweight debian-12 image for GitHub Codespaces
  • Removed Gitpod configuration (service is no longer available)

Minor Updates

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

04 Nov 07:35
83c5dc4

Choose a tag to compare

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
  • Windows and WSL2: Download the ddev_windows_amd64_installer.v1.24.9.exe; you can run it for install or upgrade.
  • 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.

⚠ 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.yaml by default with ddev config global --omit-project-name-by-default=true - useful when working with multiple Git worktrees
  • Auto-discovery of PLATFORM_PROJECT and PLATFORM_ENVIRONMENT from existing config for Upsun Flex and Upsun Fixed (Platform.sh) provider integrations

Features

Bug Fixes

  • PostgreSQL now runs as container user (mirrored from host user) instead of postgres:postgres
  • ddev describe now works with stopped or broken containers
  • Improved support for DDEV_* environment variables in PHP-based add-ons
  • APP_DEFAULT_LOCALE is no longer overridden in CakePHP, thanks to @tyler36
  • Removed hardcoded --server-id=0 parameter from MySQL/MariaDB startup, thanks to @cyppe
  • Fixed docker-compose warnings on ddev start when project root .env file contains dollar signs
  • ddev add-on get now retries without authentication on invalid GitHub token
  • Debug and verbose output now suppressed when using --json-output/-j flag
  • Non-interactive mode now forced in non-tty environments
  • Improved container username sanitization with better fallback handling
  • Fixed blackfire-php installation 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 ssh when SSH key is password-protected
  • Fixed hang in ddev start on macOS when temp directory permissions are broken after macOS upgrade (fixed in docker-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 utility is now the primary command (ddev debug moved 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=true in 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-buildx dependency for AUR installation
  • Internet detection now uses one.one.one.one instead of test.ddev.site
  • Replaced GITHUB_OWNER with DDEV_GITHUB_OWNER in https://ddev.com/install.sh
  • Switched to lightweight debian-12 image for GitHub Codespaces
  • Removed Gitpod configuration (service is no longer available)

Minor Updates

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 --- RUN by @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 search subcommand, 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...
Read more

v1.24.8

17 Sep 20:34
ac47765

Choose a tag to compare

Installation

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

  • macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
  • Linux: Use apt install ddev or apt upgrade ddev see 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 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.

⚠️ 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_SITE and PANTHEON_ENVIRONMENT variables in Pantheon Integration.

If you want to keep using .ddev/providers/pantheon.yaml from DDEV v1.24.7 and below:

  • Remove the #ddev-generated line 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 with ddev pull staging.

Highlights

  • Experimental support for add-ons written primarily in PHP
  • ddev add-on get can now automatically download add-on dependencies
  • ddev add-on get <your **PRIVATE** GitHub repo>: Support for DDEV_GITHUB_TOKEN as 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 than DDEV_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.yaml provided 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 --all now pulls all images for all projects
  • ddev heidisql now works on Linux, thanks to @punkrock34
  • New ddev npx global command, thanks to @dragonwize
  • host.docker.internal now available in all containers, not just web
  • 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-mounts with 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-hostname for Homebrew installations on Linux
  • Add missing ephemeral port handling to XHGui service, thanks to @AkibaAT
  • Allow .DS_Store files in ddev composer create-project
  • Fix ddev describe to show exposed ports correctly on new Docker Desktop versions
  • Fix nginx configuration for Backdrop routes conflicting with directories
  • Use stable branch for magerun autocompletion script
  • Don't edit Laravel database config in .env when no database is present, thanks to @cyppe
  • Remove obsolete PHP 8.4 php.ini configuration, 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-compose and retry with doubled timeout on context deadline exceeded
  • Remove docker context inspect calls from each ddev command and use the Docker CLI API
  • ddev auth ssh now uses the Docker API instead of docker run and supports stdin
  • Better reporting of MariaDB/MySQL/PostgreSQL client installation failures; removed download timeouts
  • Replace the Docker image busybox:stable with ddev/ddev-utilities:latest for 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_aio for MariaDB 10.6 (upstream change)
  • Forward *_PROXY and DDEV_* environment variables for root user in web container
  • 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 ddev on Windows before test by @stasadev in #7471
  • refactor: use compose-spec/compose-go/v2 for fixupComposeYaml by @stasadev in #7422
  • test: add a no-interaction flag to the install command in ibexa bats file by @rpkoller in #7479
  • docs: note about Flags annotation 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 build stage in docker-compose.*.yaml work 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, improve ddev 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 --update command 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...
Read more

v1.24.7: Windows Installer, MariaDB 11.8

19 Jul 00:16
5aa130a

Choose a tag to compare

Installation

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

  • macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
  • Linux: Use apt install ddev or apt upgrade ddev see 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 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

  • 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-hostname binary for hosts editing (with improved elevation/escalation technique) (gsudo is no longer required on Windows, and ddev.exe installation is no longer required on Windows WSL2. Read more
  • New Linux ddev-wsl2 package 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-ce installation
    • Rancher Desktop for Windows - has had limited manual testing only; currently the only open-source provider on traditional Windows
  • It's recommended to run ddev delete images after the upgrade

Breaking Changes

  • If you rely on ## Flags annotation in custom commands, there is a change: unknown flags will no longer be parsed and will cause Error: unknown flag or Error: unknown shorthand flag. Either define all possible flags explicitly or remove the ## Flags annotation.

Features

  • Enhanced Docker images cleanup in ddev delete images, ddev delete, ddev clean
  • Shell completion support for flags in ddev config and ddev config global
  • New DDEV_USER environment variable for use in custom .ddev/docker-compose.*.yaml files
  • ddev launch in WSL2 works without installing xdg-utils (which can be safely removed on existing installations after update)
  • Support for NO_COLOR variable, see Using NO_COLOR Inside Containers
  • Return real exit code from ddev exec and add quiet -q flag to it, thanks to @andreashager

Bug Fixes

  • Fix ddev composer create-project to accept stdin
  • Remove unused Node.js version cache in ddev-global-cache Docker volume, thanks to @lozcalver
  • Add overrides from all .ddev/config.*.yaml files to .DdevProjectConfig (used in Go templates, see example)
  • Make --json-output / -j work as expected for debug/verbose output.
  • Fix issue where the db container 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-compose v2.38.2
  • Update debian-archive-keyring for EOL database images (mysql:5.5, mysql:5.6, postgres:9, postgres:10, postgres:11)
  • Display user defined router-compose.*.yaml and ssh-auth-compose.*.yaml during ddev start
  • Align Craft CMS quickstart with official docs, thanks to @AugustMiller
  • Normalize default values in ddev help config and ddev 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 start by @stasadev in #7332
  • docs: clarify instructions for using PhpStorm inside WSL2 by @pbowyer in #7333
  • fix: make ddev composer create-project work with stdin by @stasadev in #7336
  • docs: update vendor/bin/composer examples, 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.*.yaml on ddev start by @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_USER env var for web container 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 config and ddev config global by @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 TestCmdAddon leftovers in ~/.ddev by @stasadev in #7387
  • feat: display user-defined ssh-auth-compose.*.yaml on ddev start by @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 config and ddev help config global, update docs by @stasadev in #7386
  • build: remove go-homedir, fixes #7366 by @rfay in #7390
  • test: use main for setup-homebrew action instead of master by @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 ddevcd despite 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, pin golangci-lint to v2.2.1, remove only-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 output to respect --json-output by @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_COLOR variable support, fixes #7058 by @stasadev in #7419
  • refactor: centralize table style configuration by @stasadev in #7434
  • fix: use output.UserOut for JSON output, retry on invalid input in interactive `ddev config...
Read more

v1.24.6

20 May 09:25
2842925

Choose a tag to compare

Installation

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

  • macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
  • Linux or WSL2: Use apt install ddev or apt upgrade ddev see apt/yum installation.
  • Traditional Windows: Use choco upgrade -y ddev, or download the ddev_windows_installer below.
  • 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

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.web to web container.
  • Fix broken .ddev/.gitignore file 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-compose to v2.36.1.

Otherwise, same features as in v1.24.5.

What's Changed

Full Changelog: v1.24.5...v1.24.6

v1.24.5

15 May 10:22
e429863

Choose a tag to compare

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/ddev or just brew upgrade ddev.
  • Linux or WSL2: Use apt install ddev or apt upgrade ddev see apt/yum installation
  • Traditional Windows: Use choco upgrade -y ddev, or download the ddev_windows_installer below.
  • 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.

⚠ 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/ddev

Highlights

  • 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 experimental hostAddressLoopback=true feature.
  • Resolved "unknown" state caused by PhpStorm's use of docker-compose run for 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-compose binaries now pass SHA checksum verification with retry logic.
  • New environment variables: DDEV_PRIMARY_URL_PORT, DDEV_PRIMARY_URL_WITHOUT_PORT, and DDEV_SCHEME. Thanks to @AkibaAT.
  • DDEV_APPROOT variable available in the web container. Thanks to @shelane.
  • Support for prepend.Dockerfile* files for multi-stage Docker builds. Thanks to @hanoii.
  • Improved output of ddev add-on get and added warning exit code. Thanks to @hanoii.
  • WordPress --path is now added automatically to ddev wp when docroot is set. Thanks to @pfructuoso from www.nazaries.com.
  • Craft CMS settings now reside in .ddev/.env.web; .env is no longer managed by DDEV.
  • Added shell completion for the --service (-s) flag in ddev 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 launch now correctly respects non-default ports. Thanks to @PierrePaul.
  • Avoid overriding WP_ENVIRONMENT_TYPE for WordPress.
  • ddev config now works with non-default project names in config.*.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_constraint now supports wildcards like 1.24.x and comparison operators like > 1.24.5.
  • Fixed broken HTTP/HTTPS port resolution. Thanks to @AkibaAT.

Deprecations

  • ddev composer create is deprecated. Use ddev composer create-project.
  • ddev debug capabilities is deprecated. Use ddev_version_constraint for project and add-on checks.

Minor Updates

  • PHP 8.3.21 and 8.4.7.
  • docker-compose v2.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 start checks for an index.* 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 sequelace command link to database-management.md by @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.test for ddev debug test by @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_TYPE to the docs, fixes #7178 by @stasadev in #7179
  • fix: make ddev config work with project name from config.*.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_PORT and DDEV_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/ddev homebrew 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...
Read more

v1.24.4: XHGui for XHProf Profiling

01 Apr 08:08
6df723e

Choose a tag to compare

Installation

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

  • macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
  • Linux or WSL2: Use apt install ddev or apt upgrade ddev see apt/yum installation
  • Traditional Windows: Use choco upgrade -y ddev, or download the ddev_windows_installer below.
  • 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:

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 MutagenSync annotation: 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 describe and ddev list when default 80/443 port is busy (regression from v1.24.3).
  • Correct status color formatting in ddev describe and ddev list.
  • Remove outdated Traefik images with ddev delete images, thanks to @rpkoller
  • Resolve misleading errors in ddev debug test when run outside the project root.
  • Fix invalid upload_dirs on traditional Windows setups.
  • Sanitize ~/.ddev/project_list.yaml to prevent panic.
  • Make the DDEV_PAGER environment variable optional to prevent it from breaking wp-cli output.
  • Prevent overwriting the generic project type when running ddev config --update.
  • Update DATABASE_URL to use charset=utf8mb4 in 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-description stanza in add-on install actions, thanks to @hanoii
  • Show custom config.*.yaml on ddev 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-description stanza in add-on install actions not showing if it's the first line by @hanoii in #7022
  • feat: add go-version to ddev 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-project in 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 test and 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 test by @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...
Read more

v1.24.3: Mutagen fix, Generic Webserver Type for Node.js

26 Feb 11:54
e53d3c4

Choose a tag to compare

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/ddev or just brew upgrade ddev.
  • Linux or WSL2: Use apt install ddev or apt upgrade ddev see apt/yum installation
  • Traditional Windows: Use choco upgrade -y ddev, or download the ddev_windows_installer below.
  • 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:

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.*.yaml now respect the bind_all_interfaces config option.
  • Arguments with spaces in ddev exec now behave as expected (no need to use ddev exec --raw anymore).
  • Added a better validation for docroot, and now ddev 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.conf inside the web container renamed to /etc/supervisor/conf.d/mailpit.conf
  • Apache 2 change: switch from mpm_prefork to mpm_event, thanks to @vever001
  • nginx change: set decorate_workers_output to no by 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 config for 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 config by @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 list if it's stopped by @stasadev in #6980
  • docs: Fix niggling code sample inconsistency in troubleshooting.md by @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 in exec_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 exec with double quotes instead of using raw, for #6930 by @stasadev in #7006
  • test: contao quickstart bats test by @rpkoller in https://github.com/dde...
Read more

v1.24.2: MySQL 8.4 support, improved ddev composer create

20 Jan 21:17
4de8645

Choose a tag to compare

Installation

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

  • macOS: brew install ddev/ddev/ddev or just brew upgrade ddev.
  • Linux or WSL2: Use apt install ddev or apt upgrade ddev see apt/yum installation.
  • Traditional Windows: Use choco upgrade -y ddev, or download the ddev_windows_installer below.
  • 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:

  • Support for MySQL 8.4: DDEV now uses bitnami/mysql as the base image for mysql:8.x.
  • Improved argument handling for ddev composer create: The ddev composer create-project alias has been added for better usability.
  • Global DDEV commands available inside the web container: Commands like ddev xdebug toggle can now be run directly within the web container, e.g., simply use xdebug toggle.
  • New ddev mariadb command: The ddev mysql command remains available for MariaDB users, but you can now also use ddev mariadb. (MariaDB is moving away from having mysql in the names of its commands.)

Breaking Changes:

  • ddev config location restriction: You can no longer run ddev config from the parent directory of a project, preventing accidental setups in incorrect locations.

Behavior Changes:

  • Subdirectory support for ddev config: You can now run ddev config in 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 setting export DDEV_PAGER="" outside of DDEV. Thanks to @tyler36.

Bug Fixes:

  • OpenSSH certificates for ddev auth ssh: Fixed missing OpenSSH certificates when using ddev auth ssh.
  • ddev pull acquia fix for multiple databases, thanks to @charginghawk.
  • A fix for Drupal 7 settings.ddev.php prevents problems with Mutagen not being able to update settings.php after doing a Drupal installation. Thanks to @eporama.
  • The nginx-site.conf was not being properly updated for projects of type drupal and drupal11, causing problems during update.php.

Minor Updates:

  • PHP 8.3.16 and 8.4.3.
  • A dummy ddev command is available inside the web container 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 master branch of the ddev/ddev repository has been renamed to main.
  • Quickstarts in docs can now have automated tests, and the Drupal, Backdrop, WordPress, and TYPO3 examples already do, thanks to @rpkoller.
  • CI status 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 *imageBuild folder, 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-webserver packages, add vim alternative, fixes #6840 by @wazum in #6839
  • feat: accept all args in ddev composer create, add create-project alias, 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 mariadb command, adjust ~/.my.cnf to always use root, 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 config in 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 PAGER with DDEV_PAGER env variable, for #6842 by @stasadev in #6900
  • refactor: remove outdated move-issue config , 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-compose on build and reformat ddev start output, 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

Full Changelog: v1.24.1...v1.24.2