github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/docs/content/users/usage/commands.md (about) 1 # Commands 2 3 You can tell DDEV what to do by running its commands. This page details each of the available commands and their options, or flags. 4 5 Run DDEV without any commands or flags to see this list in your terminal: 6 7 ``` 8 → ddev 9 Create and maintain a local web development environment. 10 Docs: https://ddev.readthedocs.io 11 Support: https://ddev.readthedocs.io/en/stable/users/support 12 13 Usage: 14 ddev [command] 15 16 Available Commands: 17 auth A collection of authentication commands 18 blackfire Enable or disable blackfire.io profiling (global shell web container command) 19 clean Removes items ddev has created 20 composer Executes a composer command within the web container 21 ... 22 ``` 23 24 Use [`ddev help`](#help) to learn more about a specific command, like this example for [`ddev describe`](#describe): 25 26 ``` 27 → ddev help describe 28 Get a detailed description of a running ddev project. Describe provides basic 29 information about a ddev project, including its name, location, url, and status. 30 It also provides details for MySQL connections, and connection information for 31 additional services like Mailpit. You can run 'ddev describe' from 32 a project directory to describe that project, or you can specify a project to describe by 33 running 'ddev describe <projectname>'. 34 35 Usage: 36 ddev describe [projectname] [flags] 37 38 Aliases: 39 describe, status, st, desc 40 41 Examples: 42 ddev describe 43 ddev describe <projectname> 44 ddev status 45 ddev st 46 47 Flags: 48 -h, --help help for describe 49 50 Global Flags: 51 -j, --json-output If true, user-oriented output will be in JSON format. 52 ``` 53 54 ## Global Flags 55 56 Two flags are available for every command: 57 58 * `--help` or `-h`: Outputs more information about a command rather than executing it. 59 * `--json-output` or `-j`: Format user-oriented output in JSON. 60 61 --- 62 63 ## `auth` 64 65 Authentication commands. 66 67 ### `auth ssh` 68 69 Add [SSH key authentication](../usage/cli.md#ssh-into-containers) to the `ddev-ssh-agent` container. 70 71 Example: 72 73 ```shell 74 # Add your SSH keys to the SSH agent container 75 ddev auth ssh 76 ``` 77 78 Flags: 79 80 * `--ssh-key-path`, `-d`: Full path to SSH key directory. 81 82 ## `artisan` 83 84 Run the `artisan` command; available only in projects of type `laravel`, and only available if `artisan` is in the project root. 85 86 ```shell 87 # Show all artisan subcommands 88 ddev artisan list 89 ``` 90 91 ## `blackfire` 92 93 Enable or disable [Blackfire profiling](../debugging-profiling/blackfire-profiling.md) (global shell web container command). 94 95 ```shell 96 # Display Blackfire profiling status 97 ddev blackfire status 98 99 # Start Blackfire profiling 100 ddev blackfire on 101 102 # Stop Blackfire profiling 103 ddev blackfire off 104 ``` 105 106 !!!tip 107 There are synonyms for the `on` and `off` arguments that have the exact same effect: 108 109 * `on`: `start`, `enable`, `true` 110 * `off`: `stop`, `disable`, `false` 111 112 ## `cake` 113 114 Run the `cake` command; available only in projects of type `cakephp`, and only available if `cake.php` is in bin folder. 115 116 ```shell 117 # Show all cake subcommands 118 ddev cake 119 ``` 120 121 ## `clean` 122 123 Removes items DDEV has created. (See [Uninstalling DDEV](../usage/uninstall.md).) 124 125 Flags: 126 127 * `--all`, `-a`: Clean all DDEV projects. 128 * `--dry-run`: Run the clean command without deleting. 129 130 Example: 131 132 ```shell 133 # Preview cleaning all projects without actually removing anything 134 ddev clean --dry-run --all 135 136 # Clean all projects 137 ddev clean --all 138 139 # Clean my-project and my-other-project 140 ddev clean my-project my-other-project 141 ``` 142 143 ## `composer` 144 145 Executes a [Composer command](../usage/developer-tools.md#ddev-and-composer) within the web container. 146 147 `ddev composer create` is a special command that is an adaptation of `composer create-project`. See [DDEV and Composer](../usage/developer-tools.md#ddev-and-composer) for more information. 148 149 Example: 150 151 ```shell 152 # Install Composer packages 153 ddev composer install 154 ``` 155 156 Example of `ddev composer create`: 157 158 ```shell 159 # Create a new Drupal project in the current directory 160 ddev composer create drupal/recommended-project 161 ``` 162 163 ## `config` 164 165 Create or modify a DDEV project’s configuration in the current directory. By default, `ddev config` will not change configuration that already exists in your `.ddev/config.yaml`, it will only make changes you specify with flags. However, if you want to autodetect everything, `ddev config --update` will usually do everything you need. 166 167 !!!tip "You can also set these via YAML!" 168 These settings, plus a few more, can be set by editing stored [Config Options](../configuration/config.md). 169 170 Example: 171 172 ```shell 173 # Start interactive project configuration 174 ddev config 175 176 # Accept defaults on a new project. This is the same as hitting <RETURN> 177 # on every question in `ddev config` 178 ddev config --auto 179 180 ## Detect docroot, project type, and expected defaults for an existing project 181 ddev config --update 182 183 # Configure a Drupal project with a `web` document root 184 ddev config --docroot=web --project-type=drupal 185 186 # Switch the project’s default `nginx-fpm` to `apache-fpm` 187 ddev config --webserver-type=apache-fpm 188 ``` 189 190 Flags: 191 192 * `--additional-fqdns`: Comma-delimited list of project FQDNs. 193 * `--additional-hostnames`: Comma-delimited list of project hostnames. 194 * `--auto`: Automatically run config without prompting. 195 * `--bind-all-interfaces`: Bind host ports on all interfaces, not only on localhost network interface. 196 * `--composer-root`: Overrides the default Composer root directory for the web service. 197 * `--composer-root-default`: Unsets a web service Composer root directory override. 198 * `--composer-version`: Specify override for Composer version in the web container. This may be `""`, `"1"`, `"2"`, `"2.2"`, `"stable"`, `"preview"`, `"snapshot"`, or a specific version. 199 * `--database`: Specify the database type:version to use. Defaults to `mariadb:10.11`. 200 * `--db-image`: Sets the db container image. 201 * `--db-image-default`: Sets the default db container image for this DDEV version. 202 * `--db-working-dir`: Overrides the default working directory for the db service. 203 * `--db-working-dir-default`: Unsets a db service working directory override. 204 * `--dbimage-extra-packages`: A comma-delimited list of Debian packages that should be added to db container when the project is started. 205 * `--default-container-timeout`: Default time in seconds that DDEV waits for all containers to become ready on start. (default `120`) 206 * `--disable-settings-management`: Prevent DDEV from creating or updating CMS settings files. 207 * `--disable-upload-dirs-warning`: Suppresses warning when a project is using `performance_mode: mutagen` but does not have `upload_dirs` set. 208 * `--docroot`: Provide the relative docroot of the project, like `docroot` or `htdocs` or `web`. (defaults to empty, the current directory) 209 * `--fail-on-hook-fail`: Decide whether `ddev start` should be interrupted by a failing hook. 210 * `--host-db-port`: The db container’s localhost-bound port. 211 * `--host-https-port`: The web container’s localhost-bound HTTPS port. 212 * `--host-webserver-port`: The web container’s localhost-bound port. 213 * `--http-port`: The router HTTP port for this project. 214 * `--https-port`: The router HTTPS port for this project. 215 * `--image-defaults`: Sets the default web and db container images. 216 * `--mailpit-http-port`: Router port to be used for Mailpit HTTP access. 217 * `--mailpit-https-port`: Router port to be used for Mailpit HTTPS access. 218 * `--ngrok-args`: Provide extra args to ngrok in `ddev share`. 219 * `--no-project-mount`: Whether or not to skip mounting project code into the web container. 220 * `--nodejs-version`: Specify the Node.js version to use if you don’t want the default version. 221 * `--omit-containers`: Comma-delimited list of container types that should not be started when the project is started. 222 * `--performance-mode`: Performance optimization mode, possible values are `global`, `none`, `mutagen`, `nfs`. 223 * `--performance-mode-reset`: Reset performance mode to global configuration. 224 * `--php-version`: PHP version that will be enabled in the web container. 225 * `--project-name`: Provide the project name of project to configure. (normally the same as the last part of directory name) 226 * `--project-tld`: Set the top-level domain to be used for projects. (default `"ddev.site"`) 227 * `--project-type`: Provide the project type: `backdrop`, `drupal`, `drupal6`, `drupal7`, `laravel`, `magento`, `magento2`, `php`, `shopware6`, `silverstripe`, `typo3`, `wordpress`. This is autodetected and this flag is necessary only to override the detection. 228 * `--show-config-location`: Output the location of the `config.yaml` file if it exists, or error that it doesn’t exist. 229 * `--timezone`: Specify timezone for containers and PHP, like `Europe/London` or `America/Denver` or `GMT` or `UTC`. 230 * `--update`: Automatically detect and update settings by inspecting the code. 231 * `--upload-dirs`: Sets the project’s upload directories, the destination directories of the import-files command. 232 * `--use-dns-when-possible`: Use DNS for hostname resolution instead of `/etc/hosts` when possible. (default `true`) 233 * `--web-environment`: Set the environment variables in the web container: `--web-environment="TYPO3_CONTEXT=Development,SOMEENV=someval"` 234 * `--web-environment-add`: Append environment variables to the web container: `--web-environment="TYPO3_CONTEXT=Development,SOMEENV=someval"` 235 * `--web-image`: Sets the web container image. 236 * `--web-image-default`: Sets the default web container image for this DDEV version. 237 * `--web-working-dir`: Overrides the default working directory for the web service. 238 * `--web-working-dir-default`: Unsets a web service working directory override. 239 * `--webimage-extra-packages`: A comma-delimited list of Debian packages that should be added to web container when the project is started. 240 * `--webserver-type`: Sets the project’s desired web server type: `nginx-fpm`, `nginx-gunicorn`, or `apache-fpm`. 241 * `--working-dir-defaults`: Unsets all service working directory overrides. 242 * `--xdebug-enabled`: Whether or not Xdebug is enabled in the web container. 243 244 ### `config global` 245 246 Change global configuration. 247 248 ```shell 249 # Opt out of sharing anonymized usage information 250 ddev config global --instrumentation-opt-in=false 251 252 # Skip the SSH agent for all projects 253 ddev config global --omit-containers=ddev-ssh-agent 254 ``` 255 256 * `--disable-http2`: Optionally disable http2 in `ddev-router`; `ddev config global --disable-http2` or `ddev config global --disable-http2=false`. This option is not available in the current Traefik-based `ddev-router`, but only in the deprecated `nginx-proxy` router. 257 * `--fail-on-hook-fail`: If true, `ddev start` will fail when a hook fails. 258 * `--instrumentation-opt-in`: `instrumentation-opt-in=true`. 259 * `--internet-detection-timeout-ms`: Increase timeout when checking internet timeout, in milliseconds. (default `3000`) 260 * `--letsencrypt-email`: Email associated with Let’s Encrypt; `ddev global --letsencrypt-email=me@example.com`. 261 * `--mailpit-http-port`: The Mailpit HTTP port *default* for all projects; can be overridden by project configuration. 262 * `--mailpit-https-port`: The Mailpit HTTPS port *default* for all projects; can be overridden by project configuration. 263 * `--no-bind-mounts`: If `true`, don’t use bind-mounts. Useful for environments like remote Docker where bind-mounts are impossible. (default is equal to `--no-bind-mounts=true`) 264 * `--omit-containers`: For example, `--omit-containers=ddev-ssh-agent`. 265 * `--performance-mode`: Performance optimization mode, possible values are `none`, `mutagen`, `nfs`. 266 * `--performance-mode-reset`: Reset performance optimization mode to operating system default (`none` for Linux and WSL2, `mutagen` for macOS and traditional Windows). 267 * `--project-tld`: Set the default top-level domain to be used for all projects. (default `"ddev.site"`). Note that this will be overridden in a project that defines `project_tld`. 268 * `--router-http-port`: The router HTTP port *default* for all projects; can be overridden by project configuration. 269 * `--router-https-port`: The router HTTPS port *default* for all projects; can be overridden by project configuration. 270 * `--simple-formatting`: If `true`, use simple formatting and no color for tables. 271 * `--table-style`: Table style for list and describe, see `~/.ddev/global_config.yaml` for values. 272 * `--traefik-monitor-port`: Can be used to change the Traefik monitor port in case of port conflicts, for example `ddev config global --traefik-monitor-port=11999`. 273 * `--use-hardened-images`: If `true`, use more secure 'hardened' images for an actual internet deployment. 274 * `--use-letsencrypt`: Enables experimental Let’s Encrypt integration; `ddev global --use-letsencrypt` or `ddev global --use-letsencrypt=false`. 275 * `--web-environment`: Set the environment variables in the web container: `--web-environment="TYPO3_CONTEXT=Development,SOMEENV=someval"` 276 * `--web-environment-add`: Append environment variables to the web container: `--web-environment="TYPO3_CONTEXT=Development,SOMEENV=someval"` 277 278 ## `craft` 279 280 Run a [Craft CMS command](https://craftcms.com/docs/4.x/console-commands.html) inside the web container (global shell web container command). 281 282 Example: 283 284 ```shell 285 # Run pending Craft migrations and apply pending project config changes 286 ddev craft up 287 ``` 288 289 ## `dbeaver` 290 291 Open [DBeaver](https://dbeaver.io/) with the current project’s database (global shell host container command). This command is only available if `DBeaver.app` is installed as `/Applications/DBeaver.app` for macOS, if `dbeaver.exe` is installed to all users as `C:/Program Files/dbeaver/dbeaver.exe` for WSL2, and if `dbeaver` (or another binary like `dbeaver-ce`) available inside `/usr/bin` for Linux (Flatpak and snap support included). 292 293 Example: 294 295 ```shell 296 # Open the current project’s database in DBeaver 297 ddev dbeaver 298 ``` 299 300 ## `debug` 301 302 *Aliases: `d`, `dbg`.* 303 304 A collection of debugging commands, often useful for [troubleshooting](troubleshooting.md). 305 306 ### `debug capabilities` 307 308 Show capabilities of this version of DDEV. 309 310 Example: 311 312 ```shell 313 # List capabilities of the current project 314 ddev debug capabilities 315 316 # List capabilities of `my-project` 317 ddev debug capabilities my-project 318 ``` 319 320 ### `debug check-db-match` 321 322 Verify that the database in the db server matches the configured [type and version](../extend/database-types.md). 323 324 Example: 325 326 ```shell 327 # Check whether project’s running database matches configuration 328 ddev debug check-db-match 329 ``` 330 331 ### `debug compose-config` 332 333 Prints the current project’s docker-compose configuration. 334 335 Example: 336 337 ```shell 338 # Print docker-compose config for the current project 339 ddev debug compose-config 340 341 # Print docker-compose config for `my-project` 342 ddev debug compose-config my-project 343 ``` 344 345 ### `debug configyaml` 346 347 Prints the project [`config.*.yaml`](../configuration/config.md) usage. 348 349 Example: 350 351 ```shell 352 # Print config for the current project 353 ddev debug configyaml 354 355 # Print config specifically for `my-project` 356 ddev debug configyaml my-project 357 ``` 358 359 ### `debug dockercheck` 360 361 Diagnose DDEV Docker/Colima setup. 362 363 Example: 364 365 ```shell 366 # Output contextual details for the Docker provider 367 ddev debug dockercheck 368 ``` 369 370 ### `debug download-images` 371 372 Download the basic Docker images required by DDEV. This can be useful on a new machine to prevent `ddev start` or other commands having to download the various images. 373 374 Example: 375 376 ```shell 377 # Download DDEV’s basic Docker images 378 ddev debug download-images 379 ``` 380 381 ### `debug fix-commands` 382 383 Refreshes [custom command](../extend/custom-commands.md) definitions without running [`ddev start`](#start). 384 385 Example: 386 387 ```shell 388 # Refresh the current project’s custom commands 389 ddev debug fix-commands 390 ``` 391 392 ### `debug get-volume-db-version` 393 394 Get the database type and version found in the `ddev-dbserver` database volume, which may not be the same as the configured database [type and version](../extend/database-types.md). 395 396 Example: 397 398 ```shell 399 # Print the database volume’s engine and version 400 ddev debug get-volume-db-version 401 ``` 402 403 ### `debug migrate-database` 404 405 Migrate a MySQL or MariaDB database to a different `dbtype:dbversion`. Works only with MySQL and MariaDB, not with PostgreSQL. 406 407 Example: 408 409 ```shell 410 # Migrate the current project’s database to MariaDB 10.7 411 ddev debug migrate-database mariadb:10.7 412 ``` 413 414 ### `debug mutagen` 415 416 Allows access to any [Mutagen command](https://mutagen.io/documentation/introduction). 417 418 Example: 419 420 ```shell 421 # Run Mutagen’s `sync list` command 422 ddev debug mutagen sync list 423 ``` 424 425 ### `debug nfsmount` 426 427 Checks to see if [NFS mounting](../install/performance.md#nfs) works for current project. 428 429 Example: 430 431 ```shell 432 # See if NFS is working as expected for the current project 433 ddev debug nfsmount 434 ``` 435 436 ### `debug refresh` 437 438 Refreshes the project’s Docker cache. 439 440 Example: 441 442 ```shell 443 # Refresh the current project’s Docker cache 444 ddev debug refresh 445 ``` 446 447 ### `debug router-nginx-config` 448 449 Prints the router’s [nginx config](../extend/customization-extendibility.md#custom-nginx-configuration). 450 451 Example: 452 453 ```shell 454 # Output router nginx configuration 455 ddev debug router-nginx-config 456 ``` 457 458 ### `debug test` 459 460 Run diagnostics using the embedded [test script](https://github.com/ddev/ddev/blob/master/cmd/ddev/cmd/scripts/test_ddev.sh). 461 462 Example: 463 464 ```shell 465 # Run DDEV’s diagnostic suite 466 ddev debug test 467 ``` 468 469 ### `debug testcleanup` 470 471 Removes all diagnostic projects created with `ddev debug test`. 472 473 Example: 474 475 ```shell 476 # Remove all DDEV’s diagnostic projects 477 ddev debug testcleanup 478 ``` 479 480 ## `delete` 481 482 Remove all information, including the database, for an existing project. 483 484 Flags: 485 486 * `--all`, `-a`: Delete all projects. 487 * `--clean-containers`: Clean up all DDEV Docker containers not required by this version of DDEV. (default `true`) 488 * `--omit-snapshot`, `-O`: Omit/skip database snapshot. 489 * `--yes`, `-y`: Skip confirmation prompt. 490 491 Example: 492 493 ```shell 494 # Delete my-project and my-other-project 495 ddev delete my-project my-other-project 496 497 # Delete the current project without taking a snapshot or confirming 498 ddev delete --omit-snapshot --yes 499 ``` 500 501 ### `delete images` 502 503 With `--all`, it deletes all `ddev/ddev-*` Docker images. 504 505 Flags: 506 507 * `--all`, `-a`: If set, deletes all Docker images created by DDEV. 508 * `--yes`, `-y`: Skip confirmation prompt. 509 510 Example: 511 512 ```shell 513 # Delete images 514 ddev delete images 515 516 # Delete images and skip confirmation 517 ddev delete images -y 518 519 # Delete all DDEV-created images 520 ddev delete images --all 521 ``` 522 523 ## `describe` 524 525 *Aliases: `status`, `st`, `desc`.* 526 527 Get a detailed description of a running DDEV project. 528 529 Example: 530 531 ```shell 532 # Display details for the current project 533 ddev describe 534 535 # Display details for my-project 536 ddev describe my-project 537 ``` 538 539 ## `drush` 540 541 Run the `drush` command; available only in projects of type `drupal*`, and only available if `drush` is in the project. On projects of type `drupal`, `drush` should be installed in the project itself, (`ddev composer require drush/drush`). On projects of type `drupal7` `drush` 8 is provided by DDEV. 542 543 ```shell 544 # Show drush status/configuration 545 ddev drush st 546 ``` 547 548 ## `exec` 549 550 *Alias: `.`.* 551 552 [Execute a shell command in the container](../usage/cli.md#executing-commands-in-containers) for a service. Uses the web service by default. 553 554 To run your command in a different service container, run `ddev exec --service <service> <cmd>`. Use the `--raw` flag if you’d like to run a raw, uninterpreted command in a container. 555 556 Flags: 557 558 * `--dir`, `-d`: Defines the execution directory within the container. 559 * `--raw`: Use raw exec (do not interpret with Bash inside container). (default `true`) 560 * `--service`, `-s`: Defines the service to connect to. (e.g. `web`, `db`) (default `"web"`) 561 562 Example: 563 564 ```shell 565 # List the web container’s docroot contents 566 ddev exec ls /var/www/html 567 568 # List the web container’s vendor directory contents 569 ddev exec --dir /var/www/html/vendor ls 570 571 # Output a long, recursive list of the files in the web container 572 ddev exec --raw -- ls -lR 573 ``` 574 575 ## `export-db` 576 577 Dump a database to a file or to stdout. 578 579 Flags: 580 581 * `--bzip2`: Use bzip2 compression. 582 * `--database`, `-d`: Target database to export from (default `"db"`) 583 * `--file`, `-f`: Path to a SQL dump file to export to 584 * `--gzip`: Use gzip compression (default `true`) 585 * `--xz`: Use xz compression. 586 587 Example: 588 589 ```shell 590 # Dump and compress the current project’s database to `/tmp/db.sql.gz` 591 ddev export-db --file=/tmp/db.sql.gz 592 593 # Dump the current project’s database, without compressing it, to `/tmp/db.sql` 594 ddev export-db --gzip=false --file /tmp/db.sql 595 596 # Dump and compress the current project’s `foo` database instead of `db` 597 ddev export-db --database=foo --file=/tmp/db.sql.gz 598 599 # Output the current project’s database and use `>` to write to `/tmp/db.sql.gz` 600 ddev export-db > /tmp/db.sql.gz 601 602 # Dump my-project’s database, without compressing it, to `/tmp/my-project.sql` 603 ddev export-db my-project --gzip=false --file=/tmp/my-project.sql 604 ``` 605 606 ## `get` 607 608 Download an [add-on](../extend/additional-services.md) (service, provider, etc.). 609 610 Flags: 611 612 * `--all`: List unofficial *and* official add-ons. (default `true`) 613 * `--list`: List official add-ons. (default `true`) 614 * `--installed`: List installed add-ons 615 * `--remove <add-on>`: Remove an installed add-on 616 * `--version <version>`: Specify a version to download 617 * `--verbose`, `-v`: Output verbose error information with Bash `set -x` (default `false`) 618 619 Environment variables: 620 621 * `DDEV_GITHUB_TOKEN`: A [GitHub token](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/creating-a-personal-access-token) may be used for `ddev get` requests (which result in GitHub API queries). It's unusual for casual users to need this, but if you're doing lots of `ddev get` requests you may run into rate limiting. The token you use requires no privileges at all. Example: 622 623 ```bash 624 export DDEV_GITHUB_TOKEN=<your github token> 625 ddev get --list --all 626 ``` 627 628 Example: 629 630 ```shell 631 # List official add-ons 632 ddev get --list 633 634 # List official and third-party add-ons 635 ddev get --list --all 636 637 # Download the official Redis add-on 638 ddev get ddev/ddev-redis 639 640 # Get debug info about `ddev get` failure 641 ddev get ddev/ddev-redis --verbose 642 643 # Download the official Redis add-on, version v1.0.4 644 ddev get ddev/ddev-redis --version v1.0.4 645 646 # Download the Drupal Solr add-on from its v1.2.3 release tarball 647 ddev get https://github.com/ddev/ddev-drupal-solr/archive/refs/tags/v1.2.3.tar.gz 648 649 # Copy an add-on available in another directory 650 ddev get /path/to/package 651 652 # Copy an add-on from a tarball in another directory 653 ddev get /path/to/tarball.tar.gz 654 655 # View installed add-ons 656 ddev get --installed 657 658 # Remove an add-on can be done with the full name, the short name of repo 659 # or with owner/repo format 660 ddev get --remove redis 661 ddev get --remove ddev-redis 662 ddev get --remove ddev/ddev-redis 663 ``` 664 665 In general, you can run `ddev get` multiple times without doing any damage. Updating an add-on can be done by running `ddev get <add-on-name>`. If you have changed an add-on file and removed the `#ddev-generated` marker in the file, that file will not be touched and DDEV will let you know about it. 666 667 ## `heidisql` 668 669 Open [HeidiSQL](https://www.heidisql.com/) with the current project’s database (global shell host container command). This command is only available if `Heidisql.exe` is installed as `C:\Program Files\HeidiSQL\Heidisql.exe`. 670 671 Example: 672 673 ```shell 674 # Open the current project’s database in HeidiSQL 675 ddev heidisql 676 ``` 677 678 ## `help` 679 680 Help about any command. 681 682 Example: 683 684 ```shell 685 # Illuminate the virtues of the `describe` command 686 ddev help describe 687 ``` 688 689 ## `hostname` 690 691 Manage your hostfile entries. 692 693 Flags: 694 695 * `--remove`, `-r`: Remove the provided hostname - ip correlation. 696 * `--remove-inactive`, `-R`: Remove hostnames of inactive projects. 697 698 Example: 699 700 ```shell 701 ddev hostname somesite.ddev.local 127.0.0.1 702 ``` 703 704 ## `import-db` 705 706 [Import a SQL file](database-management.md) into the project. 707 708 Flags: 709 710 * `--database`, `-d`: Target database to import into (default `"db"`) 711 * `--extract-path`: Path to extract within the archive 712 * `--file`, `-f`: Path to a SQL dump in `.sql`, `.tar`, `.tar.gz`, `.tar.bz2`, `.tar.xz`, `.tgz`, or `.zip` format 713 * `--no-drop`: Do not drop the database before importing 714 * `--no-progress`: Do not output progress 715 716 Example: 717 718 ```shell 719 # Start the interactive import utility 720 ddev import-db 721 722 # Import the `.tarballs/db.sql` dump to the project database 723 ddev import-db --file=.tarballs/db.sql 724 725 # Import the compressed `.tarballs/db.sql.gz` dump to the project database 726 ddev import-db --file=.tarballs/db.sql.gz 727 728 # Import the compressed `.tarballs/db.sql.gz` dump to a `other_db` database 729 ddev import-db --database=additional_db --file=.tarballs/db.sql.gz 730 731 # Import the `db.sql` dump to the project database 732 ddev import-db < db.sql 733 734 # Import the `db.sql` dump to the `my-project` default database 735 ddev import-db my-project < db.sql 736 737 # Uncompress `db.sql.gz` and pipe the result to the `import-db` command 738 gzip -dc db.sql.gz | ddev import-db 739 ``` 740 741 ## `import-files` 742 743 Pull the uploaded files directory of an existing project to the default public upload directory of your project. More usage information and a description of the Tar or ZIP archive is in the [usage section](../usage/cli.md#ddev-import-files). 744 745 Flags: 746 747 * `--extract-path`: Path to extract within the archive. 748 * `--source`, `-s`: Path to the source directory or source archive in `.tar`, `.tar.gz`, `.tar.bz2`, `.tar.xz`, `.tgz`, or `.zip` format. 749 * `--target`, `-t`: Target upload dir, defaults to the first upload dir. 750 751 Example: 752 753 ```shell 754 # Extract+import `/path/to/files.tar.gz` to the project’s first upload directory 755 ddev import-files --source=/path/to/files.tar.gz 756 757 # Import `/path/to/dir` contents to the project’s first upload directory 758 ddev import-files --source=/path/to/dir 759 760 # Import `.tarballs/files.tar.xz` contents to the project’s `../private` upload directory 761 ddev import-files --source=.tarballs/files.tar.xz --target=../private 762 763 # Import `/path/to/dir` contents to the project’s `sites/default/files` upload directory 764 ddev import-files -s=.tarballs/files.tar.gz -t=sites/default/files 765 ``` 766 767 ## `launch` 768 769 Launch a browser with the current site (global shell host container command). 770 771 Flags: 772 773 * `--mailpit`, `-m`: Open Mailpit. 774 775 !!!tip "How to disable HTTP redirect to HTTPS?" 776 Recommendations for: 777 778 * [Google Chrome](https://stackoverflow.com/q/73875589) 779 * [Mozilla Firefox](https://stackoverflow.com/q/30532471) 780 * [Safari](https://stackoverflow.com/q/46394682) 781 782 Example: 783 784 ```shell 785 # Open your project’s base URL in the default browser 786 ddev launch 787 788 # Open Mailpit in the default browser 789 ddev launch --mailpit 790 791 # Open your project’s base URL appended with `temp/phpinfo.php` 792 ddev launch temp/phpinfo.php 793 794 # Open the full URL (any website) in the default browser 795 ddev launch https://your.ddev.site 796 797 # Open your project’s base URL using a specific port 798 ddev launch :3000 799 ``` 800 801 ## `list` 802 803 *Aliases: `l`, `ls`.* 804 805 List projects. 806 807 Flags: 808 809 * `--active-only`, `-A`: If set, only currently active projects will be displayed. 810 * `--continuous`: If set, project information will be emitted until the command is stopped. 811 * `--continuous-sleep-interval`, `-I`: Time in seconds between `ddev list --continuous` output lists. (default `1`) 812 * `--type`, `-t`: Show only projects of this type (e.g. `drupal`, `wordpress`, `php`). 813 * `--wrap-table`, `-W`: Display table with wrapped text if required. 814 815 Example: 816 817 ```shell 818 # List all projects 819 ddev list 820 821 # List all running projects 822 ddev list --active-only 823 824 # List all WordPress projects 825 ddev list --type wordpress 826 ``` 827 828 ## `logs` 829 830 Get the logs from your running services. 831 832 Flags: 833 834 * `--follow`, `-f`: Follow the logs in real time. 835 * `--service`, `-s`: Defines the service to retrieve logs from (e.g. `web`, `db`). (default `"web"`) 836 * `--tail`: How many lines to show. 837 * `--time`, `-t`: Add timestamps to logs. 838 839 Example: 840 841 ```shell 842 # Display recent logs from the current project’s web server 843 ddev logs 844 845 # Stream logs from the current project’s web server in real time 846 ddev logs -f 847 848 # Display recent logs from the current project’s database server 849 ddev logs -s db 850 851 # Display recent logs from my-project’s database server 852 ddev logs -s db my-project 853 ``` 854 855 ## `mailpit` 856 857 Launch a browser with mailpit for the current project (global shell host container command). 858 859 Example: 860 861 ```shell 862 # Open Mailpit in the default browser 863 ddev mailpit 864 ``` 865 866 ## `magento` 867 868 Run the `magento` command; available only in projects of type `magento2`, and only works if `bin/magento` is in the project. 869 870 ```shell 871 # Show all magento subcommands 872 ddev magento list 873 ``` 874 875 ## `mutagen` 876 877 Commands for [Mutagen](../install/performance.md#mutagen) status and sync, etc. 878 879 ### `mutagen logs` 880 881 Show Mutagen logs for debugging. 882 883 Flags: 884 885 * `--verbose`: Show full Mutagen logs. 886 887 Example: 888 889 ```shell 890 # Stream Mutagen’s logs in real time 891 ddev mutagen logs 892 893 # Stream Mutagen’s more detailed logs in real time 894 ddev mutagen logs --verbose 895 ``` 896 897 ### `mutagen monitor` 898 899 Monitor Mutagen status. 900 901 Example: 902 903 ```shell 904 # Start Mutagen’s sync process and monitor its status in real time 905 ddev mutagen sync && ddev mutagen monitor 906 ``` 907 908 ### `mutagen reset` 909 910 Stops a project and removes the Mutagen Docker volume. 911 912 ```shell 913 # Reset Mutagen data for the current project 914 ddev mutagen reset 915 916 # Reset Mutagen data for my-project 917 ddev mutagen reset my-project 918 ``` 919 920 ### `mutagen status` 921 922 Shows Mutagen sync status. 923 924 Flags: 925 926 * `--verbose`, `-l`: Extended/verbose output for Mutagen status. 927 928 Example: 929 930 ```shell 931 # Display Mutagen sync status for the current project 932 ddev mutagen status 933 934 # Display Mutagen sync status for my-project 935 ddev mutagen status my-project 936 ``` 937 938 ### `mutagen sync` 939 940 Explicit sync for Mutagen. 941 942 Flags: 943 944 * `--verbose`: Extended/verbose output for Mutagen status. 945 946 Example: 947 948 ```shell 949 # Initiate Mutagen sync for the current project 950 ddev mutagen sync 951 952 # Initiate Mutagen sync for my-project 953 ddev mutagen sync my-project 954 ``` 955 956 ## `mysql` 957 958 Run MySQL client in the database container (global shell db container command). This is only available on projects that use the `mysql` or `mariadb` database types. 959 960 Example: 961 962 ```shell 963 # Run the database container’s MySQL client 964 ddev mysql 965 966 # Run the database container’s MySQL client as root user 967 ddev mysql -uroot -proot 968 969 # Pipe the `SHOW TABLES;` command to the MySQL client to see a list of tables 970 echo 'SHOW TABLES;' | ddev mysql 971 ``` 972 973 ## `npm` 974 975 Run [`npm`](https://docs.npmjs.com/cli/v9/commands/npm) inside the web container (global shell web container command). 976 977 Example: 978 979 ```shell 980 # Install JavaScript packages using `npm` 981 ddev npm install 982 983 # Update JavaScript packages using `npm` 984 ddev npm update 985 ``` 986 987 ## `nvm` 988 989 Run [`nvm`](https://github.com/nvm-sh/nvm#usage) inside the web container (global shell web container command). 990 991 !!!tip 992 Use of `ddev nvm` is discouraged because `nodejs_version` is much easier to use, can specify any version, and is more robust than using `nvm`. 993 994 Example: 995 996 ```shell 997 # Use `nvm` to switch to Node.js v20 998 ddev nvm install 20 999 1000 # Check the installed Node.js version 1001 ddev nvm current 1002 1003 # Reset Node.js to `nodejs_version` 1004 ddev nvm alias default system 1005 1006 # Switch between two installed Node.js versions 1007 ddev nvm install 20 1008 ddev nvm install 18 1009 ddev nvm alias default 20 1010 ddev nvm alias default 18 1011 ``` 1012 1013 !!!warning "`nvm use` works only inside the web container after `ddev ssh`" 1014 Use `ddev nvm alias default <version>` instead. 1015 1016 ## `php` 1017 1018 Run `php` inside the web container (global shell web container command). 1019 1020 Example: 1021 1022 ```shell 1023 # Output the web container’s PHP version 1024 ddev php --version 1025 ``` 1026 1027 ## `poweroff` 1028 1029 *Alias: `powerdown`.* 1030 1031 Completely stop all projects and containers. 1032 1033 !!!tip 1034 This is the equivalent of running `ddev stop -a --stop-ssh-agent`. 1035 1036 Example: 1037 1038 ```shell 1039 # Stop all projects and containers 1040 ddev poweroff 1041 ``` 1042 1043 ## `psql` 1044 1045 Run PostgreSQL client in the database container (global shell db container command). This is only available on projects that use the `postgres` database type. 1046 1047 Example: 1048 1049 ```shell 1050 # List available databases 1051 ddev psql -l 1052 1053 # List tables in the default 'db' database 1054 echo "\dt;" | ddev psql 1055 1056 ``` 1057 1058 ## `pull` 1059 1060 Pull files and database using a configured [provider plugin](./../providers/index.md). 1061 1062 Flags: 1063 1064 * `--environment=ENV1=val1,ENV2=val2` 1065 * `--skip-confirmation`, `-y`: Skip confirmation step. 1066 * `--skip-db`: Skip pulling database archive. 1067 * `--skip-files`: Skip pulling file archive. 1068 * `--skip-import`: Download archive(s) without importing than. 1069 1070 Example: 1071 1072 ```shell 1073 # Pull a backup from the configured Pantheon project to use locally 1074 ddev pull pantheon 1075 1076 # Pull a backup from the configured Platform.sh project to use locally 1077 ddev pull platform 1078 1079 # Pull a backup from the configured Pantheon project without confirming 1080 ddev pull pantheon -y 1081 1082 # Pull the Platform.sh database archive *only* without confirming 1083 ddev pull platform --skip-files -y 1084 1085 # Pull the localfile integration’s files *only* without confirming 1086 ddev pull localfile --skip-db -y 1087 1088 # Pull from Platform.sh specifying the environment variables PLATFORM_ENVIRONMENT and PLATFORM_CLI_TOKEN on the command line 1089 ddev pull platform --environment=PLATFORM_ENVIRONMENT=main,PLATFORMSH_CLI_TOKEN=abcdef 1090 ``` 1091 1092 ## `push` 1093 1094 Push files and database using a configured [provider plugin](./../providers/index.md). 1095 1096 Example: 1097 1098 ```shell 1099 # Push local files and database to the configured Pantheon project 1100 ddev push pantheon 1101 1102 # Push local files and database to the configured Platform.sh project 1103 ddev push platform 1104 1105 # Push files and database to Pantheon without confirming 1106 ddev push pantheon -y 1107 1108 # Push database only to Platform.sh without confirming 1109 ddev push platform --skip-files -y 1110 1111 # Push files only to Acquia without confirming 1112 ddev push acquia --skip-db -y 1113 ``` 1114 1115 ## `python` 1116 1117 Runs `python` inside the web container in the same relative directory you're in on the host. 1118 1119 `ddev python` is only available on Python-based project types like Django and Python. 1120 1121 Example: 1122 1123 ```shell 1124 # Run manage.py 1125 ddev python manage.py migrate 1126 ``` 1127 1128 ## `querious` 1129 1130 Open [Querious](https://www.araelium.com/querious) with the current project’s MariaDB or MySQL database (global shell host container command). This is only available if `Querious.app` is installed as `/Applications/Querious.app`, and only for projects with `mysql` or `mariadb` databases. 1131 1132 Example: 1133 1134 ```shell 1135 # Open the current project’s database in Querious 1136 ddev querious 1137 ``` 1138 1139 ## `restart` 1140 1141 Restart one or several projects. 1142 1143 Flags: 1144 1145 * `--all`, `-a`: Restart all projects. 1146 1147 Example: 1148 1149 ```shell 1150 # Restart the current project 1151 ddev restart 1152 1153 # Restart my-project and my-other-project 1154 ddev restart my-project my-other-project 1155 1156 # Restart all projects 1157 ddev restart --all 1158 ``` 1159 1160 ## `sake` 1161 1162 Run the `sake` command, only available for Silverstripe projects and if the Silverstripe `sake` command is 1163 available in the `vendor/bin` folder. 1164 1165 Common commands: 1166 1167 * Build database: `ddev sake dev/build` 1168 * List of available tasks: `ddev sake dev/tasks` 1169 1170 ## `self-upgrade` 1171 1172 Output instructions for updating or upgrading DDEV. The command doesn’t perform the upgrade, but tries to provide instructions relevant to your installation. 1173 1174 Example: 1175 1176 ``` 1177 → ddev self-upgrade 1178 1179 DDEV appears to have been installed with install_ddev.sh, you can run that script again to update. 1180 curl -fsSL https://ddev.com/install.sh | bash 1181 ``` 1182 1183 ## `sequelace` 1184 1185 Open [SequelAce](https://sequel-ace.com/) with the current project’s database (global shell host container command). This command is only available if `Sequel Ace.app` is installed as `/Applications/Sequel ace.app`, and only for projects with `mysql` or `mariadb` databases. 1186 1187 Example: 1188 1189 ```shell 1190 # Open the current project’s database in SequelAce 1191 ddev sequelace 1192 ``` 1193 1194 ## `sequelpro` 1195 1196 !!!warning "Sequel Pro is abandoned!" 1197 The project is abandoned and doesn’t work with MySQL 8. We recommend Sequel Ace, Querious, TablePlus, and DBeaver. 1198 1199 Open Sequel Pro with the current project’s database (global shell host container command). This command is only available if `Sequel Pro.app` is installed as `/Applications/Sequel pro.app`, and only for projects with `mysql` or `mariadb` databases. 1200 1201 Example: 1202 1203 ```shell 1204 # Open the current project’s database in Sequel Pro 1205 ddev sequelpro 1206 ``` 1207 1208 ## `service` 1209 1210 Add or remove, enable or disable [extra services](../extend/additional-services.md). 1211 1212 ### `service disable` 1213 1214 Disable a service. 1215 1216 Example: 1217 1218 ```shell 1219 # Disable the Solr service 1220 ddev service disable solr 1221 ``` 1222 1223 ### `service enable` 1224 1225 Enable a service. 1226 1227 Example: 1228 1229 ```shell 1230 # Enable the Solr service 1231 ddev service enable solr 1232 ``` 1233 1234 ## `share` 1235 1236 [Share the current project](../topics/sharing.md) on the internet via [ngrok](https://ngrok.com). 1237 1238 !!!tip 1239 Any ngrok flag can also be specified in the [`ngrok_args` config setting](../configuration/config.md#ngrok_args). 1240 1241 Flags: 1242 1243 * `--ngrok-args`: Accepts any flag from `ngrok http --help`. 1244 1245 Example: 1246 1247 ```shell 1248 # Share the current project with ngrok 1249 ddev share 1250 1251 # Share the current project with ngrok, using domain `foo.ngrok-free.app` 1252 ddev share --ngrok-args "--domain foo.ngrok-free.app" 1253 1254 # Share the current project using ngrok’s basic-auth argument 1255 ddev share --ngrok-args "--basic-auth username:pass1234" 1256 1257 # Share my-project with ngrok 1258 ddev share my-project 1259 ``` 1260 1261 ## `snapshot` 1262 1263 Create a database snapshot for one or more projects. 1264 1265 This uses `xtrabackup` or `mariabackup` to create a database snapshot in the `.ddev/db_snapshots` directory. These are compatible with server backups using the same tools and can be restored with the [`snapshot restore`](#snapshot-restore) command. 1266 1267 See [Snapshotting and Restoring a Database](../usage/cli.md#snapshotting-and-restoring-a-database) for more detail, or [Database Management](../usage/database-management.md) for more on working with databases in general. 1268 1269 Flags: 1270 1271 * `--all`, `-a`: Snapshot all projects. (Will start stopped or paused projects.) 1272 * `--cleanup`, `-C`: Cleanup snapshots. 1273 * `--list`, `-l`: List snapshots. 1274 * `--name`, `-n`: Provide a name for the snapshot. 1275 * `--yes`, `-y`: Skip confirmation prompt. 1276 1277 Example: 1278 1279 ```shell 1280 # Take a database snapshot for the current project 1281 ddev snapshot 1282 1283 # Take a database snapshot for the current project, named `my_snapshot_name` 1284 ddev snapshot --name my_snapshot_name 1285 1286 # Take a snapshot for the current project, cleaning up existing snapshots 1287 ddev snapshot --cleanup 1288 1289 # Take a snapshot for the current project, cleaning existing snapshots and skipping prompt 1290 ddev snapshot --cleanup -y 1291 1292 # List the current project’s snapshots 1293 ddev snapshot --list 1294 1295 # Take a snapshot for each project 1296 ddev snapshot --all 1297 ``` 1298 1299 ### `snapshot restore` 1300 1301 Restores a database snapshot from the `.ddev/db_snapshots` directory. 1302 1303 Flags: 1304 1305 * `--latest`: Use the latest snapshot. 1306 1307 Example: 1308 1309 ```shell 1310 # Restore the most recent snapshot 1311 ddev snapshot restore --latest 1312 1313 # Restore the previously-taken `my_snapshot_name` snapshot 1314 ddev snapshot restore my_snapshot_name 1315 ``` 1316 1317 ## `ssh` 1318 1319 Starts a shell session in a service container. Uses the web service by default. 1320 1321 Flags: 1322 1323 * `--dir`, `-d`: Defines the destination directory within the container. 1324 * `--service`, `-s`: Defines the service to connect to. (default `"web"`) 1325 1326 Example: 1327 1328 ```shell 1329 # SSH into the current project’s web container 1330 ddev ssh 1331 1332 # SSH into the current project’s database container 1333 ddev ssh -s db 1334 1335 # SSH into the web container for my-project 1336 ddev ssh my-project 1337 1338 # SSH into the docroot of the current project’s web container 1339 ddev ssh -d /var/www/html 1340 ``` 1341 1342 ## `start` 1343 1344 Start a DDEV project. 1345 1346 Flags: 1347 1348 * `--all`, `-a`: Start all projects. 1349 * `--skip-confirmation`, `-y`: Skip any confirmation steps. 1350 1351 Example: 1352 1353 ```shell 1354 # Start the current project 1355 ddev start 1356 1357 # Start my-project and my-other-project 1358 ddev start my-project my-other-project 1359 1360 # Start all projects 1361 ddev start --all 1362 ``` 1363 1364 ## `stop` 1365 1366 *Aliases: `rm`, `remove`.* 1367 1368 Stop and remove the containers of a project. Does not lose or harm anything unless you add `--remove-data`. 1369 1370 Flags: 1371 1372 * `--all`, `-a`: Stop and remove all running or container-stopped projects and remove from global projects list. 1373 * `--omit-snapshot`, `-O`: Omit/skip database snapshot. 1374 * `--remove-data`, `-R`: Remove stored project data (MySQL, logs, etc.). 1375 * `--snapshot`, `-S`: Create database snapshot. 1376 * `--stop-ssh-agent`: Stop the `ddev-ssh-agent` container. 1377 * `--unlist`, `-U`: Remove the project from global project list, so it won’t appear in [`ddev list`](#list) until started again. 1378 1379 Example: 1380 1381 ```shell 1382 # Stop the current project 1383 ddev stop 1384 1385 # Stop my-project, my-other-project, and my-third-project 1386 ddev stop my-project my-other-project my-third-project 1387 1388 # Stop all projects 1389 ddev stop --all 1390 1391 # Stop all projects and the `ddev-ssh-agent` container 1392 ddev stop --all --stop-ssh-agent 1393 1394 # Stop all projects and remove their data 1395 ddev stop --remove-data 1396 ``` 1397 1398 ## `tableplus` 1399 1400 Open [TablePlus](https://tableplus.com) with the current project’s database (global shell host container command). This command is only available if `TablePlus.app` is installed as `/Applications/TablePlus.app`. 1401 1402 Example: 1403 1404 ```shell 1405 # Open the current project’s database in TablePlus 1406 ddev tableplus 1407 ``` 1408 1409 ## `typo3` 1410 1411 Run the `typo3` command; available only in projects of type `typo3`, and only works if `typo3` is in the `$PATH` inside the container; normally it's in `vendor/bin/typo3` so will be found. 1412 1413 ```shell 1414 # Show typo3 site configuration 1415 ddev typo3 site:show 1416 ``` 1417 1418 ## `version` 1419 1420 Print DDEV and component versions. 1421 1422 Example: 1423 1424 ```shell 1425 # Print DDEV and platform version details 1426 ddev version 1427 ``` 1428 1429 !!!tip 1430 `ddev --version` is a more concise command that only outputs the DDEV version without component versions. 1431 1432 ## `wp` 1433 1434 Run the [WP-CLI `wp` command](https://wp-cli.org/); available only in projects of type `wordpress`. 1435 1436 ```shell 1437 # Install WordPress site using `wp core install` 1438 ddev wp core install --url='$DDEV_PRIMARY_URL' --title='New-WordPress' --admin_user=admin --admin_email=admin@example.com --prompt=admin_password 1439 1440 ``` 1441 1442 ## `xdebug` 1443 1444 Enable or disable [Xdebug](../debugging-profiling/step-debugging.md) (global shell web container command). 1445 1446 * The `on` argument is equivalent to `enable` and `true`. 1447 * The `off` argument is equivalent to `disable` and `false`. 1448 1449 ```shell 1450 # Display whether Xdebug is running 1451 ddev xdebug status 1452 1453 # Turn Xdebug on 1454 ddev xdebug 1455 1456 # Turn Xdebug on 1457 ddev xdebug on 1458 1459 # Turn Xdebug off 1460 ddev xdebug off 1461 1462 # Toggle Xdebug on and off 1463 ddev xdebug toggle 1464 ``` 1465 1466 ## `xhprof` 1467 1468 Enable or disable [Xhprof](../debugging-profiling/xhprof-profiling.md) (global shell web container command). 1469 1470 * The `on` argument is equivalent to `enable` and `true`. 1471 * The `off` argument is equivalent to `disable` and `false`. 1472 1473 ```shell 1474 # Display whether Xhprof is running 1475 ddev xhprof status 1476 1477 # Turn Xhprof on 1478 ddev xhprof 1479 1480 # Turn Xhprof on 1481 ddev xhprof on 1482 1483 # Turn Xhprof off 1484 ddev xhprof off 1485 ``` 1486 1487 ## `yarn` 1488 1489 Run [`yarn` commands](https://yarnpkg.com/cli) inside the web container in the root of the project (global shell host container command). 1490 1491 !!!tip 1492 Use `--cwd` for another directory, or you can change directories to the desired directory and `ddev yarn` will act on the same relative directory inside the container. 1493 1494 !!!tip 1495 If you want to define your Yarn version on a per project basis, set `corepack_enable: true` in `.ddev/config.yaml` or `ddev config --corepack-enable` 1496 1497 Example: 1498 1499 ```shell 1500 # Use Yarn to install JavaScript packages 1501 ddev yarn install 1502 1503 # Use Yarn to add the Lerna package 1504 ddev yarn add lerna 1505 1506 # Use yarn in a relative directory 1507 cd web/core && ddev yarn add lerna 1508 1509 # Use Yarn to add the Lerna package from the `web/core` directory 1510 ddev yarn --cwd web/core add lerna 1511 1512 # Use latest yarn or specified yarn 1513 ddev config --corepack-enable && ddev restart 1514 ddev yarn set version stable 1515 ddev yarn --version 1516 ```