Installation/Upgrade
See the installation instructions for details, but it's easy:
- macOS Homebrew and Linux Linuxbrew:
brew install drud/ddev/ddev
or brew upgrade drud/ddev/ddev
). (You may need a brew update
for homebrew to find the new release.). This works on Apple Silicon Homebrew as well.
- Windows: Use
choco upgrade -y ddev
to get this one, or download the ddev_windows_installer below.
- Linux and macOS with the install_ddev.sh script: Download the script, make it executable, and run it:
./install_ddev.sh
or curl -LO https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh && bash install_ddev.sh
- And anywhere, you can just download the tarball or zipball, untar or unzip it, and place the executable in your path where it belongs.
- Consider
ddev delete images
after upgrading to free up disk space used by previous docker image versions. This does no harm.
- In the past, a
ddev poweroff
was required; now ddev itself detects that you have a new version and asks for permission to do a poweroff.
🚛 Key changes for v1.18
- Mutagen support results in a huge speedup for macOS and traditional Windows users. It's an optional feature, but you'll really like it. This huge feature was sponsored by Tag1 Consulting, thanks! Thanks to to Jacob Howard, the maintainer of mutagen, who offered and continues to offer and invaluable support and direction. And of course... for creating Mutagen!
- docker-compose 2.0 has come along now to where it works adequately for use with DDEV, so now you can use docker-compose v1 or v2 (greater than 2.0-rc2)
- MariaDB 10.6 is now supported
- PHP 8.1 is now supported, but not all extensions are yet available (xdebug is one of those, there are a few).
ddev list
and ddev describe
now have much more formatting support and are reorganized. You can change the way they look with ddev config global --table-style=bright
(or default
or bold
). You can turn off this fancy formatting with ddev config global --simple-formatting
- Improved integration with PhpStorm on all platforms, including WSL2 #3130
working_dir
is used
- Relative links are used
- xhprof support for performance profiling alongside blackfire.io support. xhprof also provides memory usage output, which it didn't in earlier iterations. The xhprof feature was sponsored by Tag1 Consulting, THANKS!
- The base image for the ddev-webserver is now Debian 11 Bullseye (latest version). This solves some serious problems for macOS M1 users, and of course moves along with Debian, but see the Caveats section as well.
≏ Minor changes
bind-all-interfaces
is now allowed at the project level. This lets computers on your local network connect directly to the host-exposed ports of the webserver, mailhog, dbserver.
omit_containers["ddev-router"]
is now possible, for projects that use another reverse proxy or that don't need a reverse proxy at all.
host_phpmyadmin_port
can be set, but phpmyadmin is not exposed by default (and is not exposed on the host if this is not set)
host_mailhog_port
can be set to force specific port
- Numeric usernames and usernames with umlauts now work
ddev logs
now accepts a project-name argument
PHP_IDE_CONFIG
is now set everywhere it needs to be, and not set in the context of php-fpm. Improves command-line and other interoperability.
expose
should be used in docker-compose.*.yaml files (as opposed to ports
) wherever an actual port is not needed on localhost.
- When containers talk to each other, it's best that they use fully-qualified container names and avoid ambiguity inside the docker network. For example, the web container settings now use
ddev-<projectname>-db
instead of just db
as the hostname, even though db
still works there. For a web app to talk to a solr container, use the fully-qualified name of the solr container, for example, ddev-<projectname>-solr
.
- ddev checks and warns when the disk space allocated to docker is inadequate
- mysql client history inside either web or db container will now survive ddev/docker restart
- The Acquia pull integration is improved so it downloads a compressed database, so it's quite a lot faster with large databases.
⚠️ Caveats
- Please read the caveats about Mutagen if you're using it. People are loving it, but you need to understand a bit about how it works to understand what's happening.
- The xhprof_prepend.php has moved to
.ddev/xhprof/xhprof_prepend.php
. If you have an old one in .ddev/xhprof_preprend.php
, delete it or adapt it into the new location.
- If you were following prerelease versions of v1.18, you might have a
.ddev/mutagen.yml
. It can be deleted, current configuration is in .ddev/mutagen/mutagen.yml
- If you have set the
PHP_IDE_CONFIG
via a docker-compose.*.yaml
or in the web_environment section of your project config.yaml
please remove that or it will result in a duplicate environment variable error during ddev start
.
- PhpStorm is not yet able to fully parse docker-compose v2 files, so if you're using full PhpStorm integration (detection of php version, etc) you'll want to use docker-compose v1 (
docker-compose disable-v2
) See https://github.com/drud/ddev/issues/3130 for discussion and issues.
- docker-compose v1.25 and higher, or v2.0.0-rc.2 or higher are required.
- The ddev-webserver base image is now Debian 11 Bullseye, which mostly is just the same for most people, but folks with custom Dockerfiles and a few other situations may have to adjust. For example. python2 has been removed in favor of python3. And the exact version of packages you may be installing may have to change. Ask for support if you have any trouble.
🙏🏼🙏🏼🙏🏼 Thanks!
DDEV is very much a mashup of so many wonderful projects.
- Thanks to so many upstream open-source projects. There's no way to name them all, but of course PHP, Nginx, Apache, MariaDB, and on and on. And Debian, Ubuntu, the Linux kernel and thousands of tools.
- The mutagen and xhprof features were financially sponsored and promoted by Tag1 Consulting. Wow!
- Successful mutagen support would not have been possible without loads and loads of coaching and advice from Jacob Howard, the maintainer of Mutagen.
- All the PHP packages used by DDEV are provided by deb.sury.org. It would be really hard to put it together without that. Sponsor on Github sponsors or lots of other ways.
- Xdebug support relies on 20 years of faithful support, development, maintenance by derickr. Consider supporting his work. https://github.com/sponsors/derickr
- xhprof has been around for years, but it has to get love over all that time. Thanks to andypost and the other maintainers that keep it going over time.
Commits since v1.17.7
bb043ac1 Add topic on PhpStorm integration, fixes #3130 [skip ci] (#3262)
eea7e3dc [docs] Add info links and another example to xhprof docs [skip ci]
495ebe29 [docs] Add info about omitting ddev-router [skip ci]
74b53779 Make sure mutagen sync name begins with letter, fixes #3265 (#3266)
09839683 readthedocs: Go back to using published jsmin [skip ci] (#3267)
2c130e68 Pull images earlier to avoid confusion (#3257)
36fd2e73 Stop TestAcquiaPush temporarily as it seems to fail and break upstream (#3264)
9c8137a2 Mutagen commands should not hard-fail when not enabled, fixes #3269 (#3260)
59062adb [docs] Clarify usage of the "solr path" setting in implementation details (#3261) [skip ci]
e4beb1ab Add project type and docroot to describe (#3258)
b8d9344d Bump upstream to PHP8.1-rc1 and xdebug.max_nesting_level=1000 (#3256)
c177e058 [docs] Fix missing info about older Docker Desktop
9700d58a Restore windows symlink scanning and recreation, fixes #3254 (#3255)
1225cae9 Update ddev-dbserver, router, ssh-agent images for v1.18 release (#3251)
9bee585b [docs only] Remove Drupal 8 Quickstart section [skip ci]
35e9063a [docs] Remove mention of drush.example [skip ci]
0ca78c59 Ensure monitoring is accessible also with basic authentication (#3247)
1574b48c [docs] Simplify WSL2 installation steps (#3246)
59d496b7 Speed up ddev pull acquia for both database and files (#3209)
81d7d27e Improve table formatting and presentation, fixes #3242 (#3243)
cbfda3ac Use stageMode: neighboring, which means moving mutagen volume mount (#3241)
99639cad Fix ddev pull
with mutagen enabled, fixes #3237 (#3238)
193ae408 Colors for warning and error and fail were lost, fixes #3233 (#3234)
9229c130 Exclude .DS_Store from mutagen syncing (#3236)
8bae252a pin jsmin to PR #34 (#3235)
d36a3923 Remove Apple M1 warnings about SEGFAULT [docs only] [skip ci][ci skip]
d6433b25 Provide TYPO3 and Webserver specific help (#3211) [skip ci][ci skip]
43d544e2 Update troubleshooting.md docs about port conflicts and ddev-router not found (#3225) [skip ci][ci skip]
9cc8fe4c Remove mention of drush.yml from CMS settings files topic [skip ci][ci skip]
f8447fce Use /tmp for composer create-project operation, preserve .git, fixes #2986, fixes #2422 (#3226)
c1956991 Bump mutagen to 0.12.0-beta7 (#3228)
64b57e14 Improve the command-overriding-global-command warning, fixes #3074 (#3227)
73d98885 Fix various bugs in ddev list and ddev describe, fixes #3210, fixes #3215, fixes #3218, fixes #3207 (#3222)
5d0d369c Bump required mutagen version to v0.12.0-beta12 and move RequiredMutagenVersion to version.go (#3224)
7ac928c8 Terminate mutagen if container not running or sync not working (#3220)
e42eef39 Test Improvements - TestDdevXdebugEnable (#3221)
f478f520 docker compose v2 (compose-cli) updates and fixes (#3083)
d1726701 Simplify custom cert removal to get rid of paused container warning (#3217)
bc2bf2b1 Update & redesign ddev describe output, fixes #2195, fixes #3054, fixes #2190, fixes #2959 (#2965)
5775ebbc Add project-name arg to ddev logs, fixes #3203 (#3206)
d2407e8e Bump to latest upstream (ddev-images) php image. Adds PHP 8.1 and php8.0-uploadprogress (#3198)
5237b78b Allow global omit_containers["ddev-router"], add project config to bind_all_interfaces, fixes #3028, fixes #3184 (#3191)
91255529 Minor test cleanups, ignore some conflicts with mutagen on windows (#3204)
005d935b For numeric group names, also try adding user with group id, fixes #3187, fixes #3199 (#3192)
20bd619e Don't use a full path for source of bind mount, for #3130 (#3194)
a326e744 Bump mutagen version to 0.12.0-beta5 (#3201)
5a298500 Force github actions to use actual merge commit in pr build (#3202)
1c064229 Mutagen followups for rc1, fixes #3190 (#3197)
5e5affc8 Partial updates (volume naming) from docker-compose v2 PR (#3193)
e7ea48a5 Add vscode help link for launch.json (#3180)
ffa62df9 Update test_ddev.sh to fix typo on name in comments (#3186) [skip ci][ci skip]
e2bd82de Spiff up TestDdevStartUnmanagedSettings, etc, fix SEGV panic (#3183)
8f6b367c [tests only] Mute some tests on mac M1 to avoid random EOF/connection reset by peer problems (#3182)
832c7a53 Don't write version info into config.yaml (#3181)
69dccdbf Mutagen followup tweaks and docs (#3176)
51acbf88 Allow customizing xhprof_prepend.php, fixes #3168 (#3170)
dc202dee Debian 11 Bullseye released, nginx packages available, go back to nginx 1.20, fixes #3128 (#3178)
0d81f68f [Tests only] Skip TestGetLocalHTTPResponse on mac m1 - fails always (#3177)
59ff9d63 Remove embargo on TestExtraPackages (#3175)
29a86df0 [docs] Update pantheon to emphasize that the pantheon.yaml is in project dir [skip ci][ci skip]
8c7e4f4c Attempt to get more info about Windows failures in TestCmdMutagen (#3171)
782c0cc7 Force restart if mutagen volume did not get mounted (#3167)
a859fc6b [tests only] Simplify and speed up TestAcquiaPush (#3173)
5fb514e0 Improve mutagen startup status reporting (#3172)
7dede54e Use posix-raw as default symlink mode on macOS in mutagen.yml (#3150)
a5eb4aba Use working_dir in generated compose instead of always overriding, fixes #3158 (#3160)
65b8151a Blackfire packages are currently broken, embargo TestExtraPackages, force image removal (#3169)
f754a0b4 Use container ID for beta in sync session, fixes #3161 (#3162)
1ccfa37b Fix whitespace issue in troubleshooting.md
1634225b Remove PHP_IDE_CONFIG in php-fpm instead of trying to add it elsewhere, replaces #3143, fixes #2998, fixes #3106 (#3149)
2346ace0 Add deleting docker images to troubleshooting doc [skip ci][ci skip]
2f9e963c Encourage use of expose instead of ports in docker-compose.*.yaml (#3151)
20041458 Allow use with compose v2 when DDEV_ALLOW_COMPOSE_V2 is true (#3157)
dc44131a Check available space after we've already downloaded webimage (#3165)
ad21835b TestNFSMount fails because of NFS failure on windows, make it more resilient (#3166)
2f0ca90b Mutagen finish work for alpha5 (#3155)
e1c46938 Include memory consumption by default in xhprof output. (#3154)
07954280 Provide more feedback when starting mutagen sync, add ddev yarn
and ddev mutagen monitor
, fixes #3144 (#3148)
73412455 Add ddev help to support section [skip ci][ci skip]
c4ab14e9 Ongoing mutagen updates, test improvements, fixes #3139 (#3142)
9af805e8 [docs] D9 Git repo still requires config to be run (#3141) [skip ci][ci skip]
827df165 Fix #2886: replaces deprecated ioutils package. (#3137)
763e703c Use explicit db hostname, fixes #3065 (#3111)
40e1e4ae Mutagen followups, fixes #3135 (#3134)
9c5d134e Make mysql client history survive a ddev restart (#3113)
665ce0e0 Fix extraneous newline in ddev exec, fixes #3131 (#3133)
1f95a18e Reverse broken backwards minimum disk space warning (#3132)
06ff3e53 Mutagen followup from v1.18.0-alpha1, fixes #3124 (#3125)
7b926c5c Check for adequate disk space in docker, fixes #863 (#3110)
2c2fa8c3 Fix spellcheck problem (#3127)
d0c04212 Bump required docker-compose to 1.25 (#3099)
7a963c58 [docs] add index.php to command for "simplest possible" [ci skip][skip ci]
b1e6a307 [docs] Windows WSL2 offline usage (windows-side hosts file) [skip ci][ci skip] (#3119)
409002ab [docs] Fix typo on laravel quickstart [skip ci][ci skip] (#3123)
2e4fa514 Mutagen.io caching/asynchronous update feature, fixes #3046, fixes #2361 (#3103)
334f76e3 Use debian bullseye as base image for ddev-webimage, downgrades nginx to 1.18.0, fixes #3116 (#3102) [skip ci][ci skip]
c1415727 Remove gitpod badge from PR comments (#3122) [skip ci][ci skip]
070332f4 Forgot to --rm the docker run for disk space in test_ddev.sh [skip ci][ci skip]
e839306c Add disk space check to test_ddev.sh [skip ci][ci skip]
ed17c31e Fix link to brew.sh in docs (#3104) [skip ci][ci skip]
23f26665 [docs] Add magento setup:upgrade after sampledata [skip ci][ci skip]
b7e1cd59 Improve magento quickstart with specific info about sampledata [skip ci][ci skip]
9b047b21 Do not trim quotes on Example in findDirectivesInScriptCommand (#3051) (#3057)
c71dec1d Use 'drush -r docroot' in acquia provider as acquia seems to require it now (#3100)
57f912c9 Add required --cleanup-database to setup:install in magento quickstart [skip ci][ci skip]
98e02d69 Add removing proxy settings from docker desktop to troubleshooting docs. [skip ci][ci skip]
9e24dbd6 fix markdown error in xhprof-profiling.md (#3094) [skip ci][ci skip]
74b53503 Add MariaDB 10.6, solve problems with unsupported 5.5-10.1 versions, fixes #3093 (#3096)
fce3b95d TYPO: TERMINUS_TOKEN instead of PLATFORMSH_CLI_TOKEN in comments [skip ci][ci skip]
Source code(tar.gz)
Source code(zip)
ddev-1.18.0.arm64_big_sur.bottle.tar.gz(7.04 MB)
ddev-1.18.0.arm64_big_sur.bottle.tar.gz.sha256.txt(106 bytes)
ddev-1.18.0.high_sierra.bottle.tar.gz(7.35 MB)
ddev-1.18.0.high_sierra.bottle.tar.gz.sha256.txt(104 bytes)
ddev-1.18.0.x86_64_linux.bottle.tar.gz(7.30 MB)
ddev-1.18.0.x86_64_linux.bottle.tar.gz.sha256.txt(105 bytes)
ddev_chocolatey_amd64-.v1.18.0.tar.gz(4.86 KB)
ddev_chocolatey_amd64-.v1.18.0.tar.gz.sha256.txt(104 bytes)
ddev_docker_images.amd64.v1.18.0.tar.xz(355.15 MB)
ddev_docker_images.amd64.v1.18.0.tar.xz.sha256.txt(106 bytes)
ddev_docker_images.arm64.v1.18.0.tar.xz(331.31 MB)
ddev_docker_images.arm64.v1.18.0.tar.xz.sha256.txt(106 bytes)
ddev_docker_images.v1.18.0.tar.xz(355.15 MB)
ddev_docker_images.v1.18.0.tar.xz.sha256.txt(100 bytes)
ddev_linux-amd64.v1.18.0.tar.gz(9.78 MB)
ddev_linux-amd64.v1.18.0.tar.gz.sha256.txt(98 bytes)
ddev_linux-arm64.v1.18.0.tar.gz(9.11 MB)
ddev_linux-arm64.v1.18.0.tar.gz.sha256.txt(98 bytes)
ddev_macos-amd64.v1.18.0.tar.gz(10.08 MB)
ddev_macos-amd64.v1.18.0.tar.gz.sha256.txt(98 bytes)
ddev_macos-arm64.v1.18.0.tar.gz(9.77 MB)
ddev_macos-arm64.v1.18.0.tar.gz.sha256.txt(98 bytes)
ddev_shell_completion_scripts.v1.18.0.tar.gz(9.26 KB)
ddev_shell_completion_scripts.v1.18.0.tar.gz.sha256.txt(111 bytes)
ddev_windows-amd64.v1.18.0.tar.gz(10.05 MB)
ddev_windows-amd64.v1.18.0.tar.gz.sha256.txt(100 bytes)
ddev_windows_installer.v1.18.0.exe(8.88 MB)
ddev_windows_installer.v1.18.0.exe.sha256.txt(101 bytes)