Highlights
ddev get
for new supported, maintained recipes for redis, solr, and more.- Postgresql support
- Colima support for an alternative to Docker Desktop on macOS.
Installation/Upgrade
See the installation instructions for details, but it's easy:
- macOS:
brew install drud/ddev/ddev
or justbrew upgrade drud/ddev/ddev
). (You may need abrew update
for homebrew to find the new release.). - Traditional Windows: Use
choco upgrade -y ddev
, or download the ddev_windows_installer below. - Linux or WSL2 (macOS works too) use the install_ddev.sh script: Download the script, make it executable, and run it:
./install_ddev.sh
or orcurl -LO https://raw.githubusercontent.com/drud/ddev/master/scripts/install_ddev.sh && bash install_ddev.sh
(If you already had ddev installed with homebrew you'll want tobrew unlink ddev
first.) - 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
orddev delete images --all
after upgrading to free up disk space used by previous docker image versions. This does no harm.
🚛 Key changes
ddev get --list
automatically shows available add-ons for ddevddev debug dockercheck
andddev debug test
for troubleshooting and reporting.- Easier to change $PATH inside container using .bashrc.d
- ddev exec and and lots of other commands like
ddev mysql
andddev drush
andddev php
now behave much better with quoted arguments, see #2547. - Postgres is now supported (versions 9-14) as well as MariaDB and MySQL.
ddev config --database=postgres:14
. import-db, export-db, snapshot, and snapshot restore work. (Snapshots don't work with postgres:9). ddev get
will now download and install a maintained, supported, and tested recipe for add-ons like services, custom commands and provider integrations, see docs.ddev service enable
andddev service disable
now enable and disable add-on services.- You can now run ddev without Docker Desktop on both macOS and Windows.
- Colima support on macOS works great. Note that Colima is a newish project and may experience instability, but it seems to work wonderfully. 🙏🏼 to Tag1 Consulting for sponsoring this feature!
- On Windows you can install docker inside wsl2 instead of using Docker Desktop.
- DDEV now can work with a remote docker instance.
- DDEV now supports docker contexts and the
$DOCKER_HOST
environment variable. - You can now install the current HEAD version of ddev with
brew unlink ddev && brew install --HEAD drud/ddev/ddev
- Bare in-container hostnames: You can (once again) use in-container hostnames like
db
orsolr
without having to use fully-qualified names likeddev-<project>-db
. Thanks to @jonaseberle for heroic work pioneering a path forward for this, it will make using DDEV easier for everybody. - You can remove all links: sections from custom service definitions that mapped a service name onto itself (e.g.
links: solr:solr
). This used to be needed to prioritize name resolving inside the project, but it's now taken care of by a project-local network. (However, theselinks:
lines do no harm.) - WordPress default configuration is significantly improved thanks to @timnolte.
- Database snapshots are now gzipped, resulting in perhaps 20x size difference. A snapshot that used to use 207MB on disk is now 5MB.
- When you’re using mutagen (and haven’t modified the .ddev/mutagen/mutagen.yml) ddev does a regular docker mount of your upload_dir (like sites/default/files on Drupal) instead of allowing mutagen to sync it. This means that the docker volume used for mutagen (and mutagen’s cache) use far less of your disk space.
- A new
ddev php
command is available to run php with any args you want. It runs php inside the web container. composer_root
is now configurable and doesn’t have to be in project root. Thanks to @gilbertsoft!
Minor changes
- Hook information like "Running ... " for a hook doesn't show by default now. If you want to see it you can
export DDEV_DEBUG=true
ddev start
andddev import-db
now use an absolute value when checking for available disk space, rather than a percentage. This should make things easier for Linux and Windows/WSL2 users.- Bundled
docker-compose
version changes to v2.2.3 to fix a bug.
⚠️ Caveats
- Most of you who have mutagen enabled on existing projects will want to
rm .ddev/mutagen/mutagen.yml
andddev mutagen reset
. You don't have to delete the file if the existing one has#ddev-generated
in it (hasn't been altered). - Users with exotic workarounds to the previous bash-interpreted strings for composer and exec commands will have to simplify them.
- Alpha testers will have a bad ~/.ddev/commands/web/php that should be removed (and will automatically be replaced)
- Customized script commands like drush or php won't be replaced by ddev, so you may want to rm them. So for example, if you have a ~/.ddev/commands/web/drush or
<project>/.ddev/commands/web/drush
that does not have#ddev-generated
in it, then you'll want to remove it or update it. - ddev no longer pesters about overridden commands (when project has a drush command that overrides the global drush command, for example)
- xdebug now connects to the new standard port 9003 instead of port 9000. With PhpStorm this should be invisible to all, since it listens on both ports. With vscode you may have to edit the launch.json file, see https://ddev.readthedocs.io/en/latest/users/snippets/launch.json
- With Colima you cannot mount single files into a container. This means that the traditional docker-compose.solr.yaml can't work, because it tries to mount a single file. However, the soon-to-be-standard ddev-contrib solr recipe should work because it doesn't try to mount a single file.
- docker 19.03.9 or higher is now required.
🙏🏼🙏🏼Thanks!
- Tag1 Consulting sponsored Colima support and some of the
ddev get
work, two more great features (after mutagen, mysql for arm64 andddev xhprof
!) - So much careful testing and contributions by @rpkoller @gilbertsoft, @jonaseberle @shaal @tyler36 and a cast of thousands. THANK YOU!
What's Changed
- highlight the target file by @tyler36 in https://github.com/drud/ddev/pull/3437
- Use more robust technique to detect Docker Desktop (WSL2), fixes #3441 by @rfay in https://github.com/drud/ddev/pull/3443
- Remove apt install of mysql-client as it seems to break Ubuntu test runner in Github Actions by @rfay in https://github.com/drud/ddev/pull/3446
- Make sure .gitattributes gets into commands directory, fixes #3449 by @rfay in https://github.com/drud/ddev/pull/3450
- Remove unnecessary rules for static content by @gilbertsoft in https://github.com/drud/ddev/pull/3454
- [docs] Remove sequelpro URL and update database management stuff [skip ci] by @rfay in https://github.com/drud/ddev/pull/3455
- Optimize Nginx configuration for TYPO3 by @gilbertsoft in https://github.com/drud/ddev/pull/3453
- [Tests only] Limit how many places TestShareCmd can run by @rfay in https://github.com/drud/ddev/pull/3457
- Add support for docker context, changes required docker constraint by @rfay in https://github.com/drud/ddev/pull/3452
- Update go-dockerclient to get runc per security issue by @rfay in https://github.com/drud/ddev/pull/3459
- Use volumes and copies instead of bind-mounts with db container by @rfay in https://github.com/drud/ddev/pull/3445
- [tests only] Simplify TestConfigMariaDBVersion and TestConfigMySQLVersion by @rfay in https://github.com/drud/ddev/pull/3462
- [docs] improve gitpod.io ddev-gitpod-launcher instructions with a bookmarklet by @tyler36 in https://github.com/drud/ddev/pull/3451
- [tests only] Minor test fix - exclude new links from gitpod bookmarklet by @rfay in https://github.com/drud/ddev/pull/3463
- Build using golang itself instead of using docker image by @rfay in https://github.com/drud/ddev/pull/3464
- Update cli-usage.md by @durmazmehmettemax in https://github.com/drud/ddev/pull/3467
- Bumped spellcheck GitHub action to version 0.20.0 by @jonasbn in https://github.com/drud/ddev/pull/3466
- Basic Dependabot configuration proposal by @jonasbn in https://github.com/drud/ddev/pull/3473
- [tests only] Clean up several test directories that grow over time, for #2619 by @rfay in https://github.com/drud/ddev/pull/3474
- Don't build buildkite/circleci tests on docs pushes by @rfay in https://github.com/drud/ddev/pull/3469
- Improve TestShareCmd so it doesn't fail so often by @rfay in https://github.com/drud/ddev/pull/3475
- Support and test Colima as docker environment for ddev, fixes #3208, fixes #3444 by @rfay in https://github.com/drud/ddev/pull/3470
- Add brew install --head capability to homebrew on release by @rfay in https://github.com/drud/ddev/pull/3476
- Add docs for Colima, WSL2 docker-inside, Remote Docker, Rancher Desktop, fixes #3419, for #3208 by @rfay in https://github.com/drud/ddev/pull/3477
- Rework FAQ as definition lists dt/dd with some formatting by @rfay in https://github.com/drud/ddev/pull/3478
- Fixes DDev WordPress Config Files for Override & Coding Standards, fixes #2795 by @timnolte in https://github.com/drud/ddev/pull/3468
- Add TestNetworkAmbiguity in preparation for #3403 by @rfay in https://github.com/drud/ddev/pull/3479
- [docs] Review and improve various CMS quickstart recipes by @rfay in https://github.com/drud/ddev/pull/3485
- Push mariadb-10.1 to arm64 and amd64 by @rfay in https://github.com/drud/ddev/pull/3483
- Refactor settings file management into embedded files, Adds drupal10 by @rfay in https://github.com/drud/ddev/pull/3481
- Fix blackfire-php being enabled by default on hardened/prod ddev-webserver by @rfay in https://github.com/drud/ddev/pull/3486
- Do nightly build on github instead of circleci, fixes #3013 by @rfay in https://github.com/drud/ddev/pull/3490
- [tests only] Tests should use updated wordpress 5.6 code by @rfay in https://github.com/drud/ddev/pull/3488
- [Tests only] Simplify TestDdevXdebugEnabled and TestDdevXhprofEnabled with simpler project by @rfay in https://github.com/drud/ddev/pull/3489
- Use simple container name as hostname inside docker network (use "db" instead of "ddev--db") by @jonaseberle in https://github.com/drud/ddev/pull/3403
- [docs] Update Debian verbiage in Docs, omit mentioning specific version by @jameswilson in https://github.com/drud/ddev/pull/3497
- Debug/improve macos mutagen TestCustomCommands failures by @rfay in https://github.com/drud/ddev/pull/3493
- Fix dependabot alerts about containerd by @rfay in https://github.com/drud/ddev/pull/3501
- Bring base-webserver here from ddev-images and set up manual builds, fixes #2617, fixes #3047, fixes #3375 by @rfay in https://github.com/drud/ddev/pull/3491
- Bump nltk from 3.6.5 to 3.6.6 by @dependabot in https://github.com/drud/ddev/pull/3502
- Added missing sudo to wsl2 docker install instructions by @chellman in https://github.com/drud/ddev/pull/3503
- Use gzipped database snapshots, fixes #2114 by @rfay in https://github.com/drud/ddev/pull/3496
- Add
ddev php
command, fixes #3439 by @tyler36 in https://github.com/drud/ddev/pull/3498 - Debug download images with mutagen and docker compose by @shaal in https://github.com/drud/ddev/pull/3472
- Use port 9003 for xdebug, fixes #2898, fixes #3504 by @rfay in https://github.com/drud/ddev/pull/3506
- [docs only] Fix links broken by move of old custom commands by @rfay in https://github.com/drud/ddev/pull/3509
- Don't fail if composer self-update fails in web image build (like with no internet) by @rfay in https://github.com/drud/ddev/pull/3508
- Mount .git and upload_dir with bind-mount when using mutagen, fixes #3505, fixes #3400, fixes #3384, fixes #3357 by @rfay in https://github.com/drud/ddev/pull/3507
- [tests only] composer drush is failing, fix up by @rfay in https://github.com/drud/ddev/pull/3512
- Make more efficient chown of mutagen volume, speed up start by @rfay in https://github.com/drud/ddev/pull/3515
- v1.19.x vs v1.18.x compatibility with 3rd party services, especially solr by @rfay in https://github.com/drud/ddev/pull/3510
- Use regular colima release instead of HEAD, change composer create-project approach by @rfay in https://github.com/drud/ddev/pull/3519
- Ignore a couple of misbehaving spellcheck items by @rfay in https://github.com/drud/ddev/pull/3525
- Create upload dir when creating settings, fixes #3521 by @rfay in https://github.com/drud/ddev/pull/3523
- Add build artifacts to PRs with nightly.link [skip ci] by @rfay in https://github.com/drud/ddev/pull/3529
- Terminate mutagen before chowning volume to avoid conflicts by @rfay in https://github.com/drud/ddev/pull/3528
- Make sure that rootca is writeable in ddev-global-cache by @rfay in https://github.com/drud/ddev/pull/3527
- Remove trailing space in configuration by @gilbertsoft in https://github.com/drud/ddev/pull/3531
- [docs] Add minor details to xdebug troubleshooting by @rfay in https://github.com/drud/ddev/pull/3533
- Artisan command sometimes isn't executable. Use php to run it. by @rfay in https://github.com/drud/ddev/pull/3532
- [tests only] Try again to make sure ngrok dies by @rfay in https://github.com/drud/ddev/pull/3538
- Provide
ddev service enable/disable
andddev get
commands, fixes #3068 by @rfay in https://github.com/drud/ddev/pull/3516 - Drupal6 should use mysqli for driver, fixes #3522 by @rfay in https://github.com/drud/ddev/pull/3542
- Introspect to determine service volumes to delete, fixes #3537 by @rfay in https://github.com/drud/ddev/pull/3543
- Fix bug where upload_dir is docroot if no upload_dir by @rfay in https://github.com/drud/ddev/pull/3540
- Rework database type and version configuration to mariadb:10.3 format by @rfay in https://github.com/drud/ddev/pull/3539
- Remove incorrect usages of
ddev service get
, fixes #3545 by @rfay in https://github.com/drud/ddev/pull/3546 - Change renderAppDescribe to use different URLs for each service, fixes #3520 by @rfay in https://github.com/drud/ddev/pull/3544
- Prevent unconditional overriding config sync directory by @leymannx in https://github.com/drud/ddev/pull/3550
- Add make mkdocs-serve by @rfay in https://github.com/drud/ddev/pull/3541
- Prepare ddev directory earlier, fixes #3239 by @gilbertsoft in https://github.com/drud/ddev/pull/3551
- Bump rojopolis/spellcheck-github-actions from 0.20.0 to 0.21.1 by @dependabot in https://github.com/drud/ddev/pull/3564
- ✨ bookmarklet support for Gitlabs & Bitbucket repos (corrected) by @tyler36 in https://github.com/drud/ddev/pull/3526
- Added Discord server by @penyaskito in https://github.com/drud/ddev/pull/3565
- Add full support for Postgresql, fixes #2187 by @rfay in https://github.com/drud/ddev/pull/3557
- Remove warning about missing SegmentKey in json mode by @nico-loeber in https://github.com/drud/ddev/pull/3574
- [docs] update vscode docs to use ${workspaceFolder} instead of ${workspaceRoot} by @andy-blum in https://github.com/drud/ddev/pull/3580
- Remove duplicate networks key in docs by @webflo in https://github.com/drud/ddev/pull/3581
- [docs] Fix new things markdownlint wants fixed by @rfay in https://github.com/drud/ddev/pull/3595
- Command
docker context show
not available on all docker client versions by @gambry in https://github.com/drud/ddev/pull/3589 - Support DDEV_GITHUB_TOKEN for github lookups, fixes #3586 by @rfay in https://github.com/drud/ddev/pull/3596
- Set writable perms on /var/lib/php in ddev-webserver start.sh by @rfay in https://github.com/drud/ddev/pull/3391
- Remove special handling for gitpod getting host.docker.internal by @rfay in https://github.com/drud/ddev/pull/3597
- Bump actions/github-script from 5 to 6 by @dependabot in https://github.com/drud/ddev/pull/3601
- Don't let ddev continue processing if docker context inspect doesn't work, fixes #3548 by @rfay in https://github.com/drud/ddev/pull/3605
- Improve handling of
ddev exec
,ddev composer
and exec hooks by adding--raw
, fixes #2547 by @rfay in https://github.com/drud/ddev/pull/3603 - [docs] Use --port-interface when starting colima, fixes #3560 by @rfay in https://github.com/drud/ddev/pull/3608
- [docs] Improve installation instructions, especially for WSL2/Linux by @uberhacker in https://github.com/drud/ddev/pull/3579
- Fix TestDdevAllDatabases on Windows, fixes #3582 by @rfay in https://github.com/drud/ddev/pull/3616
- Use php8 for Laravel by @weitzman in https://github.com/drud/ddev/pull/3588
- Improve web container healthcheck script by @rfay in https://github.com/drud/ddev/pull/3600
- ddev shouldn't output so much stuff when pulling 3rd party images, fixes #3556 by @rfay in https://github.com/drud/ddev/pull/3614
- Allow overriding system nodejs version and add nvm support, fixes #2651 by @rfay in https://github.com/drud/ddev/pull/3612
- Change docker-compose yaml to insert networks stanza, fixes #3587 by @rfay in https://github.com/drud/ddev/pull/3620
- Support tableplus for postgres projects by @rfay in https://github.com/drud/ddev/pull/3623
- Fix findAllImages() where project name has hyphen, fixes #3621 by @rfay in https://github.com/drud/ddev/pull/3622
- Improve healthcheck for db container including postgres, fixes #3617 by @rfay in https://github.com/drud/ddev/pull/3625
- Adds delete all images command flag, fixes #2968 by @mikebarkas in https://github.com/drud/ddev/pull/3615
- Use snapshot name exclusively instead of using the snapshot filename, fixes #3570 by @rfay in https://github.com/drud/ddev/pull/3624
- Don't allow snapshots for postgres:9, fixes #3583 by @rfay in https://github.com/drud/ddev/pull/3630
- Drupal 10 will require php8.1, use it by default by @rfay in https://github.com/drud/ddev/pull/3633
- Install GraphicsMagick by default, fixes #3569 by @gilbertsoft in https://github.com/drud/ddev/pull/3629
- Use .bashrc.d to add to $PATH, fixes #3022 by @rfay in https://github.com/drud/ddev/pull/3634
- We shouldn't use util.Failed in api method, it exits everything by @rfay in https://github.com/drud/ddev/pull/3635
- Bump rojopolis/spellcheck-github-actions from 0.21.1 to 0.22.1 by @dependabot in https://github.com/drud/ddev/pull/3637
- Fix up golangci-lint for v3 after update by @rfay in https://github.com/drud/ddev/pull/3640
- Add ddev debug dockercheck and use absolute value for disk space, fixes #1443, fixes #3433 by @rfay in https://github.com/drud/ddev/pull/3632
- Update the docs on the use of DDEV with Compose V2 support in PHPStorm by @nico-loeber in https://github.com/drud/ddev/pull/3631
- Add ddev get --list so people can discover add-ons, fixes #3552, fixes #3553 by @rfay in https://github.com/drud/ddev/pull/3641
- Bump image versions for v1.19.0-rc1 by @rfay in https://github.com/drud/ddev/pull/3642
- The absolute available space value was wrong for checking docker disk space by @rfay in https://github.com/drud/ddev/pull/3646
- ddev drush should be available for drupal10 by @rfay in https://github.com/drud/ddev/pull/3655
- Compatibility with docker-compose v1, fixes #3649 by @rfay in https://github.com/drud/ddev/pull/3657
- Gitpod, docs, minor output changes by @rfay in https://github.com/drud/ddev/pull/3659
- Make Acquia work again, fixes #3656 by @rfay in https://github.com/drud/ddev/pull/3662
- Use recent ddev version for gitpod [skip ci] by @rfay in https://github.com/drud/ddev/pull/3661
- Update containerd in vendor to fix security dependabot by @rfay in https://github.com/drud/ddev/pull/3660
- Improve
ddev nvm
persistence and availability, starting with no internet by @rfay in https://github.com/drud/ddev/pull/3664 - Make tests working from foreign repositories by @gilbertsoft in https://github.com/drud/ddev/pull/3671
- Switch to GH Forms by @gilbertsoft in https://github.com/drud/ddev/pull/3673
- Exclude a couple of commonly failing tests (TestDdevStartMultipleHostnames and TestInternalAndExternalAccessToURL) [skip ci] by @rfay in https://github.com/drud/ddev/pull/3674
- Bump webserver to v1.19.0 by @rfay in https://github.com/drud/ddev/pull/3672
- Must pull image after calculating them, fixes #3648 by @rfay in https://github.com/drud/ddev/pull/3668
- Quiet down hook output by @rfay in https://github.com/drud/ddev/pull/3667
- Update ddev list and ddev describe to try to not break URLs by @rfay in https://github.com/drud/ddev/pull/3669
- Bump actions/checkout from 2 to 3 by @dependabot in https://github.com/drud/ddev/pull/3676
- Pull the fundamental images we need earlier in Start() by @rfay in https://github.com/drud/ddev/pull/3678
- v1.19.0 docs updates, version history, etc. by @rfay in https://github.com/drud/ddev/pull/3675
- Fix piles of dead containers from the docker build process by @rfay in https://github.com/drud/ddev/pull/3677
- Make composer root directory configurable, fixes #1699 by @gilbertsoft in https://github.com/drud/ddev/pull/3654
- Make hardened images work and provide test by @rfay in https://github.com/drud/ddev/pull/3680
- v1.19.0 release prep final steps by @rfay in https://github.com/drud/ddev/pull/3684
- Add FUNDING.yml and sponsor acknowledgments [skip ci] by @rfay in https://github.com/drud/ddev/pull/3685
New Contributors
- @durmazmehmettemax made their first contribution in #3467
- @jonasbn made their first contribution in #3466
- @timnolte made their first contribution in #3468
- @nico-loeber made their first contribution in #3574
- @gambry made their first contribution in #3589
- @uberhacker made their first contribution in #3579
- @mikebarkas made their first contribution in #3615
Full Changelog: v1.18.2...v1.19.0