https://ddev.readthedocs.io/en/stable/users/usage/cli/

Submitted URL:
https://ddev.readthedocs.io/en/stable/users/usage/cli/
Report Finished:

The outgoing links identified from the page

LinkText
https://github.com/ddev/ddev ddev/ddevv1.24.12.8k614
https://github.com/ddev/ddev/blob/master/docs/content/users/usage/cli.md
https://ngrok.comngrok.com
https://ddev.com/s/discord
https://stackoverflow.com/tags/ddev

JavaScript Variables · 34 found

Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope

NameType
onbeforetoggleobject
documentPictureInPictureobject
onscrollendobject
__md_scopeobject
__md_hashfunction
__md_getfunction
__md_setfunction
paletteobject
mediaundefined
inputundefined

Console log messages · 2 found

Messages logged to the web console

TypeCategoryLog
debugother
errornetwork

HTML

The raw HTML body of the page

<!DOCTYPE html><html lang="en" class="js-focus-visible js" data-js-focus-visible=""><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><meta name="description" content="Do local website development on your computer or in the cloud with DDEV."><meta name="author" content="DDEV Foundation"><style type="text/css">:root, :host {
  --fa-font-solid: normal 900 1em/1 "Font Awesome 6 Free";
  --fa-font-regular: normal 400 1em/1 "Font Awesome 6 Free";
  --fa-font-light: normal 300 1em/1 "Font Awesome 6 Pro";
  --fa-font-thin: normal 100 1em/1 "Font Awesome 6 Pro";
  --fa-font-duotone: normal 900 1em/1 "Font Awesome 6 Duotone";
  --fa-font-duotone-regular: normal 400 1em/1 "Font Awesome 6 Duotone";
  --fa-font-duotone-light: normal 300 1em/1 "Font Awesome 6 Duotone";
  --fa-font-duotone-thin: normal 100 1em/1 "Font Awesome 6 Duotone";
  --fa-font-brands: normal 400 1em/1 "Font Awesome 6 Brands";
  --fa-font-sharp-solid: normal 900 1em/1 "Font Awesome 6 Sharp";
  --fa-font-sharp-regular: normal 400 1em/1 "Font Awesome 6 Sharp";
  --fa-font-sharp-light: normal 300 1em/1 "Font Awesome 6 Sharp";
  --fa-font-sharp-thin: normal 100 1em/1 "Font Awesome 6 Sharp";
  --fa-font-sharp-duotone-solid: normal 900 1em/1 "Font Awesome 6 Sharp Duotone";
  --fa-font-sharp-duotone-regular: normal 400 1em/1 "Font Awesome 6 Sharp Duotone";
  --fa-font-sharp-duotone-light: normal 300 1em/1 "Font Awesome 6 Sharp Duotone";
  --fa-font-sharp-duotone-thin: normal 100 1em/1 "Font Awesome 6 Sharp Duotone";
}

svg:not(:root).svg-inline--fa, svg:not(:host).svg-inline--fa {
  overflow: visible;
  box-sizing: content-box;
}

.svg-inline--fa {
  display: var(--fa-display, inline-block);
  height: 1em;
  overflow: visible;
  vertical-align: -0.125em;
}
.svg-inline--fa.fa-2xs {
  vertical-align: 0.1em;
}
.svg-inline--fa.fa-xs {
  vertical-align: 0em;
}
.svg-inline--fa.fa-sm {
  vertical-align: -0.0714285705em;
}
.svg-inline--fa.fa-lg {
  vertical-align: -0.2em;
}
.svg-inline--fa.fa-xl {
  vertical-align: -0.25em;
}
.svg-inline--fa.fa-2xl {
  vertical-align: -0.3125em;
}
.svg-inline--fa.fa-pull-left {
  margin-right: var(--fa-pull-margin, 0.3em);
  width: auto;
}
.svg-inline--fa.fa-pull-right {
  margin-left: var(--fa-pull-margin, 0.3em);
  width: auto;
}
.svg-inline--fa.fa-li {
  width: var(--fa-li-width, 2em);
  top: 0.25em;
}
.svg-inline--fa.fa-fw {
  width: var(--fa-fw-width, 1.25em);
}

.fa-layers svg.svg-inline--fa {
  bottom: 0;
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: 0;
}

.fa-layers-counter, .fa-layers-text {
  display: inline-block;
  position: absolute;
  text-align: center;
}

.fa-layers {
  display: inline-block;
  height: 1em;
  position: relative;
  text-align: center;
  vertical-align: -0.125em;
  width: 1em;
}
.fa-layers svg.svg-inline--fa {
  transform-origin: center center;
}

.fa-layers-text {
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  transform-origin: center center;
}

.fa-layers-counter {
  background-color: var(--fa-counter-background-color, #ff253a);
  border-radius: var(--fa-counter-border-radius, 1em);
  box-sizing: border-box;
  color: var(--fa-inverse, #fff);
  line-height: var(--fa-counter-line-height, 1);
  max-width: var(--fa-counter-max-width, 5em);
  min-width: var(--fa-counter-min-width, 1.5em);
  overflow: hidden;
  padding: var(--fa-counter-padding, 0.25em 0.5em);
  right: var(--fa-right, 0);
  text-overflow: ellipsis;
  top: var(--fa-top, 0);
  transform: scale(var(--fa-counter-scale, 0.25));
  transform-origin: top right;
}

.fa-layers-bottom-right {
  bottom: var(--fa-bottom, 0);
  right: var(--fa-right, 0);
  top: auto;
  transform: scale(var(--fa-layers-scale, 0.25));
  transform-origin: bottom right;
}

.fa-layers-bottom-left {
  bottom: var(--fa-bottom, 0);
  left: var(--fa-left, 0);
  right: auto;
  top: auto;
  transform: scale(var(--fa-layers-scale, 0.25));
  transform-origin: bottom left;
}

.fa-layers-top-right {
  top: var(--fa-top, 0);
  right: var(--fa-right, 0);
  transform: scale(var(--fa-layers-scale, 0.25));
  transform-origin: top right;
}

.fa-layers-top-left {
  left: var(--fa-left, 0);
  right: auto;
  top: var(--fa-top, 0);
  transform: scale(var(--fa-layers-scale, 0.25));
  transform-origin: top left;
}

.fa-1x {
  font-size: 1em;
}

.fa-2x {
  font-size: 2em;
}

.fa-3x {
  font-size: 3em;
}

.fa-4x {
  font-size: 4em;
}

.fa-5x {
  font-size: 5em;
}

.fa-6x {
  font-size: 6em;
}

.fa-7x {
  font-size: 7em;
}

.fa-8x {
  font-size: 8em;
}

.fa-9x {
  font-size: 9em;
}

.fa-10x {
  font-size: 10em;
}

.fa-2xs {
  font-size: 0.625em;
  line-height: 0.1em;
  vertical-align: 0.225em;
}

.fa-xs {
  font-size: 0.75em;
  line-height: 0.0833333337em;
  vertical-align: 0.125em;
}

.fa-sm {
  font-size: 0.875em;
  line-height: 0.0714285718em;
  vertical-align: 0.0535714295em;
}

.fa-lg {
  font-size: 1.25em;
  line-height: 0.05em;
  vertical-align: -0.075em;
}

.fa-xl {
  font-size: 1.5em;
  line-height: 0.0416666682em;
  vertical-align: -0.125em;
}

.fa-2xl {
  font-size: 2em;
  line-height: 0.03125em;
  vertical-align: -0.1875em;
}

.fa-fw {
  text-align: center;
  width: 1.25em;
}

.fa-ul {
  list-style-type: none;
  margin-left: var(--fa-li-margin, 2.5em);
  padding-left: 0;
}
.fa-ul > li {
  position: relative;
}

.fa-li {
  left: calc(-1 * var(--fa-li-width, 2em));
  position: absolute;
  text-align: center;
  width: var(--fa-li-width, 2em);
  line-height: inherit;
}

.fa-border {
  border-color: var(--fa-border-color, #eee);
  border-radius: var(--fa-border-radius, 0.1em);
  border-style: var(--fa-border-style, solid);
  border-width: var(--fa-border-width, 0.08em);
  padding: var(--fa-border-padding, 0.2em 0.25em 0.15em);
}

.fa-pull-left {
  float: left;
  margin-right: var(--fa-pull-margin, 0.3em);
}

.fa-pull-right {
  float: right;
  margin-left: var(--fa-pull-margin, 0.3em);
}

.fa-beat {
  animation-name: fa-beat;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, ease-in-out);
}

.fa-bounce {
  animation-name: fa-bounce;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.28, 0.84, 0.42, 1));
}

.fa-fade {
  animation-name: fa-fade;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
}

.fa-beat-fade {
  animation-name: fa-beat-fade;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, cubic-bezier(0.4, 0, 0.6, 1));
}

.fa-flip {
  animation-name: fa-flip;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, ease-in-out);
}

.fa-shake {
  animation-name: fa-shake;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, linear);
}

.fa-spin {
  animation-name: fa-spin;
  animation-delay: var(--fa-animation-delay, 0s);
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 2s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, linear);
}

.fa-spin-reverse {
  --fa-animation-direction: reverse;
}

.fa-pulse,
.fa-spin-pulse {
  animation-name: fa-spin;
  animation-direction: var(--fa-animation-direction, normal);
  animation-duration: var(--fa-animation-duration, 1s);
  animation-iteration-count: var(--fa-animation-iteration-count, infinite);
  animation-timing-function: var(--fa-animation-timing, steps(8));
}

@media (prefers-reduced-motion: reduce) {
  .fa-beat,
.fa-bounce,
.fa-fade,
.fa-beat-fade,
.fa-flip,
.fa-pulse,
.fa-shake,
.fa-spin,
.fa-spin-pulse {
    animation-delay: -1ms;
    animation-duration: 1ms;
    animation-iteration-count: 1;
    transition-delay: 0s;
    transition-duration: 0s;
  }
}
@keyframes fa-beat {
  0%, 90% {
    transform: scale(1);
  }
  45% {
    transform: scale(var(--fa-beat-scale, 1.25));
  }
}
@keyframes fa-bounce {
  0% {
    transform: scale(1, 1) translateY(0);
  }
  10% {
    transform: scale(var(--fa-bounce-start-scale-x, 1.1), var(--fa-bounce-start-scale-y, 0.9)) translateY(0);
  }
  30% {
    transform: scale(var(--fa-bounce-jump-scale-x, 0.9), var(--fa-bounce-jump-scale-y, 1.1)) translateY(var(--fa-bounce-height, -0.5em));
  }
  50% {
    transform: scale(var(--fa-bounce-land-scale-x, 1.05), var(--fa-bounce-land-scale-y, 0.95)) translateY(0);
  }
  57% {
    transform: scale(1, 1) translateY(var(--fa-bounce-rebound, -0.125em));
  }
  64% {
    transform: scale(1, 1) translateY(0);
  }
  100% {
    transform: scale(1, 1) translateY(0);
  }
}
@keyframes fa-fade {
  50% {
    opacity: var(--fa-fade-opacity, 0.4);
  }
}
@keyframes fa-beat-fade {
  0%, 100% {
    opacity: var(--fa-beat-fade-opacity, 0.4);
    transform: scale(1);
  }
  50% {
    opacity: 1;
    transform: scale(var(--fa-beat-fade-scale, 1.125));
  }
}
@keyframes fa-flip {
  50% {
    transform: rotate3d(var(--fa-flip-x, 0), var(--fa-flip-y, 1), var(--fa-flip-z, 0), var(--fa-flip-angle, -180deg));
  }
}
@keyframes fa-shake {
  0% {
    transform: rotate(-15deg);
  }
  4% {
    transform: rotate(15deg);
  }
  8%, 24% {
    transform: rotate(-18deg);
  }
  12%, 28% {
    transform: rotate(18deg);
  }
  16% {
    transform: rotate(-22deg);
  }
  20% {
    transform: rotate(22deg);
  }
  32% {
    transform: rotate(-12deg);
  }
  36% {
    transform: rotate(12deg);
  }
  40%, 100% {
    transform: rotate(0deg);
  }
}
@keyframes fa-spin {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}
.fa-rotate-90 {
  transform: rotate(90deg);
}

.fa-rotate-180 {
  transform: rotate(180deg);
}

.fa-rotate-270 {
  transform: rotate(270deg);
}

.fa-flip-horizontal {
  transform: scale(-1, 1);
}

.fa-flip-vertical {
  transform: scale(1, -1);
}

.fa-flip-both,
.fa-flip-horizontal.fa-flip-vertical {
  transform: scale(-1, -1);
}

.fa-rotate-by {
  transform: rotate(var(--fa-rotate-angle, 0));
}

.fa-stack {
  display: inline-block;
  vertical-align: middle;
  height: 2em;
  position: relative;
  width: 2.5em;
}

.fa-stack-1x,
.fa-stack-2x {
  bottom: 0;
  left: 0;
  margin: auto;
  position: absolute;
  right: 0;
  top: 0;
  z-index: var(--fa-stack-z-index, auto);
}

.svg-inline--fa.fa-stack-1x {
  height: 1em;
  width: 1.25em;
}
.svg-inline--fa.fa-stack-2x {
  height: 2em;
  width: 2.5em;
}

.fa-inverse {
  color: var(--fa-inverse, #fff);
}

.sr-only,
.fa-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.sr-only-focusable:not(:focus),
.fa-sr-only-focusable:not(:focus) {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

.svg-inline--fa .fa-primary {
  fill: var(--fa-primary-color, currentColor);
  opacity: var(--fa-primary-opacity, 1);
}

.svg-inline--fa .fa-secondary {
  fill: var(--fa-secondary-color, currentColor);
  opacity: var(--fa-secondary-opacity, 0.4);
}

.svg-inline--fa.fa-swap-opacity .fa-primary {
  opacity: var(--fa-secondary-opacity, 0.4);
}

.svg-inline--fa.fa-swap-opacity .fa-secondary {
  opacity: var(--fa-primary-opacity, 1);
}

.svg-inline--fa mask .fa-primary,
.svg-inline--fa mask .fa-secondary {
  fill: black;
}</style><link href="https://ddev.readthedocs.io/en/stable/users/usage/cli/" rel="canonical"><link href="../" rel="prev"><link href="../database-management/" rel="next"><link rel="icon" href="../../../favicon.png"><meta name="generator" content="mkdocs-1.6.1, mkdocs-material-9.5.48"><title>Using the ddev Command - DDEV Docs</title><link rel="stylesheet" href="../../../assets/stylesheets/main.6f8fc17f.min.css"><link rel="stylesheet" href="../../../assets/stylesheets/palette.06af60db.min.css"><link rel="stylesheet" href="../../../assets/external/fonts.googleapis.com/css.49ea35f2.css"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel="stylesheet" href="../../../assets/extra.css"><script>__md_scope=new URL("../../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script defer="" data-domain="ddev.readthedocs.io" src="../../../assets/external/plausible.io/js/script.js"></script><script>"undefined"!=typeof __md_analytics&&__md_analytics()</script><meta name="google-site-verification" content="uFpolYSfqt2_75ubmaMBdPrmc9LjnEkhZUhSF0ejXWg"><script async="" type="text/javascript" src="/_/static/javascript/readthedocs-addons.js"></script><meta name="readthedocs-project-slug" content="ddev"><meta name="readthedocs-version-slug" content="stable"><meta name="readthedocs-resolver-filename" content="/users/usage/cli/"><meta name="readthedocs-http-status" content="200"><meta name="theme-color" content="#4051b5"><meta name="color-scheme" content="light"></head> <body dir="ltr" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" data-md-color-media="(prefers-color-scheme)"> <input class="md-toggle" data-md-toggle="drawer" type="checkbox" id="__drawer" autocomplete="off"> <input class="md-toggle" data-md-toggle="search" type="checkbox" id="__search" autocomplete="off"> <label class="md-overlay" for="__drawer"></label> <div data-md-component="skip"> <a href="#using-the-ddev-command" class="md-skip"> Skip to content </a> </div> <div data-md-component="announce"> </div> <div data-md-color-scheme="default" data-md-component="outdated" hidden=""> </div> <!-- This is a copy of https://github.com/squidfunk/mkdocs-material/blob/master/src/templates/partials/header.html with a warning banner added. --> <!--
  Copyright (c) 2016-2024 Martin Donath <[email protected]>

  Permission is hereby granted, free of charge, to any person obtaining a copy
  of this software and associated documentation files (the "Software"), to
  deal in the Software without restriction, including without limitation the
  rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
  sell copies of the Software, and to permit persons to whom the Software is
  furnished to do so, subject to the following conditions:

  The above copyright notice and this permission notice shall be included in
  all copies or substantial portions of the Software.

  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
  FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
  IN THE SOFTWARE.
--> <!-- Determine classes --> <!-- Header --> <header class="md-header md-header--shadow" data-md-component="header"> <!-- Warning banner --> <nav class="md-header__inner md-grid" aria-label="Header"> <!-- Link to home --> <a href="../../.." title="DDEV Docs" class="md-header__button md-logo" aria-label="DDEV Docs" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg> </a> <!-- Button to open drawer --> <label class="md-header__button md-icon" for="__drawer"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"></path></svg> </label> <!-- Header title --> <div class="md-header__title" data-md-component="header-title"> <div class="md-header__ellipsis"> <div class="md-header__topic"> <span class="md-ellipsis"> DDEV Docs </span> </div> <div class="md-header__topic" data-md-component="header-topic"> <span class="md-ellipsis"> Using the ddev Command </span> </div> </div> </div> <!-- Color palette toggle --> <form class="md-header__option" data-md-component="palette"> <input class="md-option" data-md-color-media="(prefers-color-scheme)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to light mode" type="radio" name="__palette" id="__palette_0"> <label class="md-header__button md-icon" title="Switch to light mode" for="__palette_1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"></path></svg> </label> <input class="md-option" data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme="default" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to dark mode" type="radio" name="__palette" id="__palette_1"> <label class="md-header__button md-icon" title="Switch to dark mode" for="__palette_2" hidden=""> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg> </label> <input class="md-option" data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme="slate" data-md-color-primary="indigo" data-md-color-accent="indigo" aria-label="Switch to system preference" type="radio" name="__palette" id="__palette_2"> <label class="md-header__button md-icon" title="Switch to system preference" for="__palette_0" hidden=""> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"></path></svg> </label> </form> <!-- User preference: color palette --> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <!-- Site language selector --> <!-- Button to open search modal --> <label class="md-header__button md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg> </label> <!-- Search interface --> <div class="md-search" data-md-component="search" role="dialog"> <label class="md-search__overlay" for="__search"></label> <div class="md-search__inner" role="search"> <form class="md-search__form" name="search"> <input type="text" class="md-search__input" name="query" aria-label="Search" placeholder="Search" autocapitalize="off" autocorrect="off" autocomplete="off" spellcheck="false" data-md-component="search-query" required=""> <label class="md-search__icon md-icon" for="__search"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"></path></svg> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg> </label> <nav class="md-search__options" aria-label="Search"> <button type="reset" class="md-search__icon md-icon" title="Clear" aria-label="Clear" tabindex="-1"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"></path></svg> </button> </nav> <div class="md-search__suggest" data-md-component="search-suggest"></div> </form> <div class="md-search__output"> <div class="md-search__scrollwrap" tabindex="0"> <div class="md-search-result" data-md-component="search-result"> <div class="md-search-result__meta">Type to start searching</div> <ol class="md-search-result__list" role="presentation"></ol> </div> </div> </div> </div> </div> <!-- Repository information --> <div class="md-header__source"> <a href="https://github.com/ddev/ddev" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg> </div> <div class="md-source__repository md-source__repository--active"> ddev/ddev <ul class="md-source__facts"><li class="md-source__fact md-source__fact--version">v1.24.1</li><li class="md-source__fact md-source__fact--stars">2.8k</li><li class="md-source__fact md-source__fact--forks">614</li></ul></div> </a> </div> </nav> <!-- Navigation tabs (sticky) --> </header> <div class="md-container" data-md-component="container"> <nav class="md-tabs" aria-label="Tabs" data-md-component="tabs" hidden=""> <div class="md-grid"> <ul class="md-tabs__list"> <li class="md-tabs__item"> <a href="../../.." class="md-tabs__link"> Start! </a> </li> <li class="md-tabs__item md-tabs__item--active"> <a href="../" class="md-tabs__link"> Usage </a> </li> <li class="md-tabs__item"> <a href="../../configuration/config/" class="md-tabs__link"> Configuration </a> </li> <li class="md-tabs__item"> <a href="../../extend/customization-extendibility/" class="md-tabs__link"> Extending </a> </li> <li class="md-tabs__item"> <a href="../../debugging-profiling/step-debugging/" class="md-tabs__link"> Debugging &amp; Profiling </a> </li> <li class="md-tabs__item"> <a href="../../topics/" class="md-tabs__link"> Hosting &amp; Deployment </a> </li> <li class="md-tabs__item"> <a href="../../../developers/" class="md-tabs__link"> Development </a> </li> </ul> </div> </nav> <main class="md-main" data-md-component="main"> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component="sidebar" data-md-type="navigation"> <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label="Navigation" data-md-level="0"> <label class="md-nav__title" for="__drawer"> <a href="../../.." title="DDEV Docs" class="md-nav__button md-logo" aria-label="DDEV Docs" data-md-component="logo"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 8a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3 3 3 0 0 0 3 3m0 3.54C9.64 9.35 6.5 8 3 8v11c3.5 0 6.64 1.35 9 3.54 2.36-2.19 5.5-3.54 9-3.54V8c-3.5 0-6.64 1.35-9 3.54"></path></svg> </a> DDEV Docs </label> <div class="md-nav__source"> <a href="https://github.com/ddev/ddev" title="Go to repository" class="md-source" data-md-component="source"> <div class="md-source__icon md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.55 236.05 244 40.45a28.87 28.87 0 0 0-40.81 0l-40.66 40.63 51.52 51.52c27.06-9.14 52.68 16.77 43.39 43.68l49.66 49.66c34.23-11.8 61.18 31 35.47 56.69-26.49 26.49-70.21-2.87-56-37.34L240.22 199v121.85c25.3 12.54 22.26 41.85 9.08 55a34.34 34.34 0 0 1-48.55 0c-17.57-17.6-11.07-46.91 11.25-56v-123c-20.8-8.51-24.6-30.74-18.64-45L142.57 101 8.45 235.14a28.86 28.86 0 0 0 0 40.81l195.61 195.6a28.86 28.86 0 0 0 40.8 0l194.69-194.69a28.86 28.86 0 0 0 0-40.81"></path></svg> </div> <div class="md-source__repository md-source__repository--active"> ddev/ddev <ul class="md-source__facts"><li class="md-source__fact md-source__fact--version">v1.24.1</li><li class="md-source__fact md-source__fact--stars">2.8k</li><li class="md-source__fact md-source__fact--forks">614</li></ul></div> </a> </div> <ul class="md-nav__list"> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1"> <div class="md-nav__link md-nav__container"> <a href="../../.." class="md-nav__link "> <span class="md-ellipsis"> Start! </span> </a> <label class="md-nav__link " for="__nav_1" id="__nav_1_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_1_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1"> <span class="md-nav__icon md-icon"></span> Start! </label> <ul class="md-nav__list"> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1_2"> <div class="md-nav__link md-nav__container"> <a href="../../install/" class="md-nav__link "> <span class="md-ellipsis"> Installing </span> </a> <label class="md-nav__link " for="__nav_1_2" id="__nav_1_2_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_1_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1_2"> <span class="md-nav__icon md-icon"></span> Installing </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../install/docker-installation/" class="md-nav__link"> <span class="md-ellipsis"> Docker Installation </span> </a> </li> <li class="md-nav__item"> <a href="../../install/ddev-installation/" class="md-nav__link"> <span class="md-ellipsis"> DDEV Installation </span> </a> </li> <li class="md-nav__item"> <a href="../../install/ddev-upgrade/" class="md-nav__link"> <span class="md-ellipsis"> Upgrading </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_1_3"> <label class="md-nav__link" for="__nav_1_3" id="__nav_1_3_label" tabindex="0"> <span class="md-ellipsis"> Getting Started </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_1_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_1_3"> <span class="md-nav__icon md-icon"></span> Getting Started </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../project/" class="md-nav__link"> <span class="md-ellipsis"> Starting a Project </span> </a> </li> <li class="md-nav__item"> <a href="../../quickstart/" class="md-nav__link"> <span class="md-ellipsis"> CMS Quickstarts </span> </a> </li> <li class="md-nav__item"> <a href="../../install/performance/" class="md-nav__link"> <span class="md-ellipsis"> Performance </span> </a> </li> <li class="md-nav__item"> <a href="../../install/shell-completion/" class="md-nav__link"> <span class="md-ellipsis"> Shell Completion &amp; Autocomplete </span> </a> </li> <li class="md-nav__item"> <a href="../../install/phpstorm/" class="md-nav__link"> <span class="md-ellipsis"> PhpStorm Setup </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2" checked=""> <label class="md-nav__link" for="__nav_2" id="__nav_2_label" tabindex=""> <span class="md-ellipsis"> Usage </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_2_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_2"> <span class="md-nav__icon md-icon"></span> Usage </label> <ul class="md-nav__list"> <li class="md-nav__item md-nav__item--active md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle " type="checkbox" id="__nav_2_1" checked=""> <div class="md-nav__link md-nav__container"> <a href="../" class="md-nav__link "> <span class="md-ellipsis"> Common Tasks </span> </a> <label class="md-nav__link " for="__nav_2_1" id="__nav_2_1_label" tabindex=""> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_1_label" aria-expanded="true"> <label class="md-nav__title" for="__nav_2_1"> <span class="md-nav__icon md-icon"></span> Common Tasks </label> <ul class="md-nav__list"> <li class="md-nav__item md-nav__item--active"> <input class="md-nav__toggle md-toggle" type="checkbox" id="__toc"> <label class="md-nav__link md-nav__link--active" for="__toc"> <span class="md-ellipsis"> Using the ddev Command </span> <span class="md-nav__icon md-icon"></span> </label> <a href="./" class="md-nav__link md-nav__link--active"> <span class="md-ellipsis"> Using the ddev Command </span> </a> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc"> <li class="md-nav__item"> <a href="#lots-of-other-commands" class="md-nav__link"> <span class="md-ellipsis"> Lots of Other Commands </span> </a> </li> <li class="md-nav__item"> <a href="#nodejs-npm-nvm-and-yarn" class="md-nav__link"> <span class="md-ellipsis"> Node.js, npm, nvm, and Yarn </span> </a> </li> <li class="md-nav__item"> <a href="#more-bundled-tools" class="md-nav__link"> <span class="md-ellipsis"> More Bundled Tools </span> </a> </li> <li class="md-nav__item"> <a href="#exporting-a-database" class="md-nav__link"> <span class="md-ellipsis"> Exporting a Database </span> </a> </li> <li class="md-nav__item"> <a href="#ddev-import-files" class="md-nav__link"> <span class="md-ellipsis"> ddev import-files </span> </a> </li> <li class="md-nav__item"> <a href="#snapshotting-and-restoring-a-database" class="md-nav__link"> <span class="md-ellipsis"> Snapshotting and Restoring a Database </span> </a> </li> <li class="md-nav__item"> <a href="#interacting-with-your-project" class="md-nav__link"> <span class="md-ellipsis"> Interacting with Your Project </span> </a> </li> <li class="md-nav__item"> <a href="#stopping-a-project" class="md-nav__link"> <span class="md-ellipsis"> Stopping a Project </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item"> <a href="../database-management/" class="md-nav__link"> <span class="md-ellipsis"> Database Management </span> </a> </li> <li class="md-nav__item"> <a href="../cms-settings/" class="md-nav__link"> <span class="md-ellipsis"> Managing CMS Settings </span> </a> </li> <li class="md-nav__item"> <a href="../managing-projects/" class="md-nav__link"> <span class="md-ellipsis"> Managing projects </span> </a> </li> <li class="md-nav__item"> <a href="../troubleshooting/" class="md-nav__link"> <span class="md-ellipsis"> Troubleshooting </span> </a> </li> <li class="md-nav__item"> <a href="../offline/" class="md-nav__link"> <span class="md-ellipsis"> Using DDEV Offline </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_2"> <label class="md-nav__link" for="__nav_2_2" id="__nav_2_2_label" tabindex=""> <span class="md-ellipsis"> Reference </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_2"> <span class="md-nav__icon md-icon"></span> Reference </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../architecture/" class="md-nav__link"> <span class="md-ellipsis"> How DDEV Works </span> </a> </li> <li class="md-nav__item"> <a href="../commands/" class="md-nav__link"> <span class="md-ellipsis"> Commands </span> </a> </li> <li class="md-nav__item"> <a href="../developer-tools/" class="md-nav__link"> <span class="md-ellipsis"> Built-in Developer Tools </span> </a> </li> <li class="md-nav__item"> <a href="../diagnostics/" class="md-nav__link"> <span class="md-ellipsis"> Diagnostics </span> </a> </li> <li class="md-nav__item"> <a href="../uninstall/" class="md-nav__link"> <span class="md-ellipsis"> Uninstalling </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--section md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_2_3"> <label class="md-nav__link" for="__nav_2_3" id="__nav_2_3_label" tabindex=""> <span class="md-ellipsis"> Getting Help </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_2_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_2_3"> <span class="md-nav__icon md-icon"></span> Getting Help </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../faq/" class="md-nav__link"> <span class="md-ellipsis"> FAQ </span> </a> </li> <li class="md-nav__item"> <a href="../../support/" class="md-nav__link"> <span class="md-ellipsis"> Support </span> </a> </li> <li class="md-nav__item"> <a href="../../code-of-conduct/" class="md-nav__link"> <span class="md-ellipsis"> Code of Conduct </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_3"> <label class="md-nav__link" for="__nav_3" id="__nav_3_label" tabindex="0"> <span class="md-ellipsis"> Configuration </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_3_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_3"> <span class="md-nav__icon md-icon"></span> Configuration </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../configuration/config/" class="md-nav__link"> <span class="md-ellipsis"> Config Options </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/database-types/" class="md-nav__link"> <span class="md-ellipsis"> Database Server Types </span> </a> </li> <li class="md-nav__item"> <a href="../../configuration/hooks/" class="md-nav__link"> <span class="md-ellipsis"> Hooks </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/additional-hostnames/" class="md-nav__link"> <span class="md-ellipsis"> Additional Project Hostnames </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_4"> <label class="md-nav__link" for="__nav_4" id="__nav_4_label" tabindex="0"> <span class="md-ellipsis"> Extending </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_4_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_4"> <span class="md-nav__icon md-icon"></span> Extending </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../extend/customization-extendibility/" class="md-nav__link"> <span class="md-ellipsis"> Extending and Customizing Environments </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/additional-services/" class="md-nav__link"> <span class="md-ellipsis"> Additional Service Configurations &amp; Add-ons </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/custom-compose-files/" class="md-nav__link"> <span class="md-ellipsis"> Defining Additional Services with Docker Compose </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/customizing-images/" class="md-nav__link"> <span class="md-ellipsis"> Customizing Docker Images </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/custom-commands/" class="md-nav__link"> <span class="md-ellipsis"> Custom Commands </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/in-container-configuration/" class="md-nav__link"> <span class="md-ellipsis"> In-Container Home Directory and Shell Configuration </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/custom-tls-certificates/" class="md-nav__link"> <span class="md-ellipsis"> Custom TLS Certificates </span> </a> </li> <li class="md-nav__item"> <a href="../../extend/traefik-router/" class="md-nav__link"> <span class="md-ellipsis"> Router Customization and Debugging (Traefik) </span> </a> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5"> <label class="md-nav__link" for="__nav_5" id="__nav_5_label" tabindex="0"> <span class="md-ellipsis"> Debugging &amp; Profiling </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5"> <span class="md-nav__icon md-icon"></span> Debugging &amp; Profiling </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../debugging-profiling/step-debugging/" class="md-nav__link"> <span class="md-ellipsis"> Step Debugging with Xdebug </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_5_2"> <label class="md-nav__link" for="__nav_5_2" id="__nav_5_2_label" tabindex="0"> <span class="md-ellipsis"> Profiling </span> <span class="md-nav__icon md-icon"></span> </label> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_5_2_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_5_2"> <span class="md-nav__icon md-icon"></span> Profiling </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../debugging-profiling/blackfire-profiling/" class="md-nav__link"> <span class="md-ellipsis"> Blackfire Profiling </span> </a> </li> <li class="md-nav__item"> <a href="../../debugging-profiling/xhprof-profiling/" class="md-nav__link"> <span class="md-ellipsis"> xhprof Profiling </span> </a> </li> <li class="md-nav__item"> <a href="../../debugging-profiling/xdebug-profiling/" class="md-nav__link"> <span class="md-ellipsis"> Xdebug Profiling </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6"> <div class="md-nav__link md-nav__container"> <a href="../../topics/" class="md-nav__link "> <span class="md-ellipsis"> Hosting &amp; Deployment </span> </a> <label class="md-nav__link " for="__nav_6" id="__nav_6_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_6_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6"> <span class="md-nav__icon md-icon"></span> Hosting &amp; Deployment </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../topics/sharing/" class="md-nav__link"> <span class="md-ellipsis"> Sharing Your Project </span> </a> </li> <li class="md-nav__item"> <a href="../../topics/hosting/" class="md-nav__link"> <span class="md-ellipsis"> Hosting with DDEV </span> </a> </li> <li class="md-nav__item"> <a href="../../topics/remote-docker/" class="md-nav__link"> <span class="md-ellipsis"> Remote Docker Environments </span> </a> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_6_5"> <div class="md-nav__link md-nav__container"> <a href="../../providers/" class="md-nav__link "> <span class="md-ellipsis"> Hosting Provider Integrations </span> </a> <label class="md-nav__link " for="__nav_6_5" id="__nav_6_5_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="2" aria-labelledby="__nav_6_5_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_6_5"> <span class="md-nav__icon md-icon"></span> Hosting Provider Integrations </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../providers/acquia/" class="md-nav__link"> <span class="md-ellipsis"> Acquia </span> </a> </li> <li class="md-nav__item"> <a href="../../providers/lagoon/" class="md-nav__link"> <span class="md-ellipsis"> Lagoon </span> </a> </li> <li class="md-nav__item"> <a href="../../providers/pantheon/" class="md-nav__link"> <span class="md-ellipsis"> Pantheon </span> </a> </li> <li class="md-nav__item"> <a href="../../providers/platform/" class="md-nav__link"> <span class="md-ellipsis"> Platform.sh </span> </a> </li> <li class="md-nav__item"> <a href="../../providers/upsun/" class="md-nav__link"> <span class="md-ellipsis"> Upsun </span> </a> </li> </ul> </nav> </li> </ul> </nav> </li> <li class="md-nav__item md-nav__item--nested"> <input class="md-nav__toggle md-toggle md-toggle--indeterminate" type="checkbox" id="__nav_7"> <div class="md-nav__link md-nav__container"> <a href="../../../developers/" class="md-nav__link "> <span class="md-ellipsis"> Development </span> </a> <label class="md-nav__link " for="__nav_7" id="__nav_7_label" tabindex="0"> <span class="md-nav__icon md-icon"></span> </label> </div> <nav class="md-nav" data-md-level="1" aria-labelledby="__nav_7_label" aria-expanded="false"> <label class="md-nav__title" for="__nav_7"> <span class="md-nav__icon md-icon"></span> Development </label> <ul class="md-nav__list"> <li class="md-nav__item"> <a href="../../../developers/building-contributing/" class="md-nav__link"> <span class="md-ellipsis"> Building, Testing, and Contributing </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/buildkite-testmachine-setup/" class="md-nav__link"> <span class="md-ellipsis"> Buildkite Test Agent Setup </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/github-selfhosted-setup/" class="md-nav__link"> <span class="md-ellipsis"> GitHub Self-Hosted Agent Setup </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/project-types/" class="md-nav__link"> <span class="md-ellipsis"> Adding New Project Types </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/release-management/" class="md-nav__link"> <span class="md-ellipsis"> Release Management &amp; Docker Images </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/brand-guide/" class="md-nav__link"> <span class="md-ellipsis"> Brand Guide </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/testing-docs/" class="md-nav__link"> <span class="md-ellipsis"> Working on the Docs </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/writing-style-guide/" class="md-nav__link"> <span class="md-ellipsis"> Writing Style Guide </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/remote-config/" class="md-nav__link"> <span class="md-ellipsis"> Remote Config </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/maintainers/" class="md-nav__link"> <span class="md-ellipsis"> Maintainer Tasks, Privileges, Resources </span> </a> </li> <li class="md-nav__item"> <a href="../../../developers/secret-management/" class="md-nav__link"> <span class="md-ellipsis"> Secret Management </span> </a> </li> </ul> </nav> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component="sidebar" data-md-type="toc"> <div class="md-sidebar__scrollwrap"> <div class="md-sidebar__inner"> <nav class="md-nav md-nav--secondary" aria-label="Table of contents"> <label class="md-nav__title" for="__toc"> <span class="md-nav__icon md-icon"></span> Table of contents </label> <ul class="md-nav__list" data-md-component="toc"> <li class="md-nav__item"> <a href="#lots-of-other-commands" class="md-nav__link"> <span class="md-ellipsis"> Lots of Other Commands </span> </a> </li> <li class="md-nav__item"> <a href="#nodejs-npm-nvm-and-yarn" class="md-nav__link"> <span class="md-ellipsis"> Node.js, npm, nvm, and Yarn </span> </a> </li> <li class="md-nav__item"> <a href="#more-bundled-tools" class="md-nav__link"> <span class="md-ellipsis"> More Bundled Tools </span> </a> </li> <li class="md-nav__item"> <a href="#exporting-a-database" class="md-nav__link"> <span class="md-ellipsis"> Exporting a Database </span> </a> </li> <li class="md-nav__item"> <a href="#ddev-import-files" class="md-nav__link"> <span class="md-ellipsis"> ddev import-files </span> </a> </li> <li class="md-nav__item"> <a href="#snapshotting-and-restoring-a-database" class="md-nav__link"> <span class="md-ellipsis"> Snapshotting and Restoring a Database </span> </a> </li> <li class="md-nav__item"> <a href="#interacting-with-your-project" class="md-nav__link"> <span class="md-ellipsis"> Interacting with Your Project </span> </a> </li> <li class="md-nav__item"> <a href="#stopping-a-project" class="md-nav__link"> <span class="md-ellipsis"> Stopping a Project </span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-content" data-md-component="content"> <article class="md-content__inner md-typeset"> <a href="https://github.com/ddev/ddev/blob/master/docs/content/users/usage/cli.md" title="Edit this page" class="md-content__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20.71 7.04c.39-.39.39-1.04 0-1.41l-2.34-2.34c-.37-.39-1.02-.39-1.41 0l-1.84 1.83 3.75 3.75M3 17.25V21h3.75L17.81 9.93l-3.75-3.75z"></path></svg> </a> <h1 id="using-the-ddev-command">Using the <code>ddev</code> Command<a class="headerlink" href="#using-the-ddev-command" title="Permanent link">¶</a></h1> <p>Type <code>ddev</code> or <code>ddev -h</code> in a terminal window to see the available DDEV <a href="../commands/">commands</a>. There are commands to configure a project, start, stop, describe, etc. Each command also has help using <code>ddev help &lt;command&gt;</code> or <code>ddev command -h</code>. For example, <code>ddev help snapshot</code> will show help and examples for the snapshot command.</p> <ul> <li><a href="../commands/#config"><code>ddev config</code></a> configures a project’s type and docroot, either interactively or with flags.</li> <li><a href="../commands/#start"><code>ddev start</code></a> starts up a project.</li> <li><a href="../commands/#launch"><code>ddev launch</code></a> opens a web browser showing the project.</li> <li><a href="../commands/#list"><code>ddev list</code></a> shows current projects and their state.</li> <li><a href="../commands/#describe"><code>ddev describe</code></a> gives all the info about the current project.</li> <li><a href="../commands/#ssh"><code>ddev ssh</code></a> takes you into the web container.</li> <li><a href="../commands/#exec"><code>ddev exec &lt;command&gt;</code></a> executes a command inside the web container.</li> <li><a href="../commands/#stop"><code>ddev stop</code></a> stops a project and removes its memory usage (but does not throw away any data).</li> <li><a href="../commands/#poweroff"><code>ddev poweroff</code></a> stops all resources that DDEV is using and stops the Mutagen daemon if it’s running.</li> <li><a href="../commands/#delete"><code>ddev delete</code></a> destroys the database and DDEV’s knowledge of the project without touching your code.</li> <li><a href="../commands/#add-on"><code>ddev add-on</code></a> adds an add-on service.</li> </ul> <h2 id="lots-of-other-commands">Lots of Other Commands<a class="headerlink" href="#lots-of-other-commands" title="Permanent link">¶</a></h2> <ul> <li><a href="../commands/#mysql"><code>ddev mysql</code></a> gives direct access to the MySQL client and <code>ddev psql</code> to the PostgreSQL <code>psql</code> client.</li> <li><code>ddev sequelace</code>, <a href="../commands/#tableplus"><code>ddev tableplus</code></a>, and <code>ddev querious</code> (macOS only, if the app is installed) give access to the Sequel Ace, TablePlus or Querious database browser GUIs.</li> <li><code>ddev heidisql</code> (Windows/WSL2 only, if installed) gives access to the HeidiSQL database browser GUI.</li> <li><a href="../commands/#import-db"><code>ddev import-db</code></a> and <a href="../commands/#export-db"><code>ddev export-db</code></a> import or export SQL or compressed SQL files.</li> <li><a href="../commands/#composer"><code>ddev composer</code></a> runs Composer inside the container. For example, <code>ddev composer install</code> will do a full composer install for you without even needing Composer on your computer. See <a href="../developer-tools/#ddev-and-composer">developer tools</a>.</li> <li><a href="../commands/#snapshot"><code>ddev snapshot</code></a> makes a very fast snapshot of your database that can be easily and quickly restored with <a href="../commands/#snapshot-restore"><code>ddev snapshot restore</code></a>.</li> <li><a href="../commands/#share"><code>ddev share</code></a> requires ngrok and at least a free account on <a href="https://ngrok.com">ngrok.com</a> so you can let someone in the next office or on the other side of the planet see your project and what you’re working on. <code>ddev share -h</code> gives more info about how to set up ngrok.</li> <li><a href="../commands/#xdebug"><code>ddev xdebug</code></a> enables Xdebug, <code>ddev xdebug off</code> disables it, and <code>ddev xdebug status</code> shows status. You can toggle Xdebug on and off easily using <code>ddev xdebug toggle</code>.</li> <li><a href="../commands/#xhprof"><code>ddev xhprof</code></a> enables xhprof, <code>ddev xhprof off</code> disables it, and <code>ddev xhprof status</code> shows status.</li> <li><code>ddev drush</code> (Drupal and Backdrop only) gives direct access to the <code>drush</code> CLI.</li> <li><code>ddev artisan</code> (Laravel only) gives direct access to the Laravel <code>artisan</code> CLI.</li> <li><code>ddev magento</code> (Magento2 only) gives access to the <code>magento</code> CLI.</li> <li><code>ddev console</code> (Symfony only) gives access to the <code>symfony console</code> CLI.</li> <li><a href="../commands/#craft"><code>ddev craft</code></a> (Craft CMS only) gives access to the <code>craft</code> CLI.</li> <li><a href="../commands/#yarn"><code>ddev yarn</code></a> and <a href="../commands/#npm"><code>ddev npm</code></a> give direct access to the <code>yarn</code> and <code>npm</code> CLIs.</li> <li><code>ddev cake</code> (CakePHP only) gives direct access to the CakePHP <code>cake</code> CLI.</li> </ul> <h2 id="nodejs-npm-nvm-and-yarn">Node.js, npm, nvm, and Yarn<a class="headerlink" href="#nodejs-npm-nvm-and-yarn" title="Permanent link">¶</a></h2> <p><code>node</code>, <code>nodejs</code>, <code>npm</code>, <code>nvm</code> and <code>yarn</code> are preinstalled in the web container. You can configure the default value of the installed Node.js version with the <a href="../../configuration/config/#nodejs_version"><code>nodejs_version</code></a> option in <code>.ddev/config.yaml</code> or with <code>ddev config --nodejs_version</code>. You can also override that with any value using the built-in <code>nvm</code> in the web container or with <a href="../commands/#nvm"><code>ddev nvm</code></a>, for example <code>ddev nvm install 6</code>. There is also a <a href="../commands/#yarn"><code>ddev yarn</code></a> command. (Note that since <code>nodejs_version</code> configuration can now specify any <code>node</code> version, including patch versions, it’s preferred to using the less robust <code>ddev nvm</code> way of specifying the <code>node</code> version.)</p> <h2 id="more-bundled-tools">More Bundled Tools<a class="headerlink" href="#more-bundled-tools" title="Permanent link">¶</a></h2> <p>In addition to the <a href="../commands/"><em>commands</em></a> listed above, there are lots of tools included inside the containers:</p> <ul> <li><a href="../commands/#describe"><code>ddev describe</code></a> tells how to access <strong>Mailpit</strong>, which captures email in your development environment.</li> <li>Composer, Git, Node.js, npm, nvm, symfony, and dozens of other tools are installed in the web container, and you can access them via <a href="../commands/#ssh"><code>ddev ssh</code></a> or <a href="../commands/#exec"><code>ddev exec</code></a>.</li> <li><a href="../commands/#logs"><code>ddev logs</code></a> gets you web server logs; <code>ddev logs -s db</code> gets database server logs.</li> <li><code>sqlite3</code> and the <code>mysql</code> and <code>psql</code> clients are inside the web container (and <code>mysql</code> or <code>psql</code> client is also in the <code>db</code> container).</li> </ul> <h2 id="exporting-a-database">Exporting a Database<a class="headerlink" href="#exporting-a-database" title="Permanent link">¶</a></h2> <p>You can export a database with <a href="../commands/#export-db"><code>ddev export-db</code></a>, which outputs to stdout or with options to a file:</p> <div class="highlight"><pre id="__code_0"><span></span><button class="md-clipboard md-icon" title="Copy to clipboard" data-clipboard-target="#__code_0 > code"></button><code><a id="__codelineno-0-1" name="__codelineno-0-1" href="#__codelineno-0-1"></a>ddev<span class="w"> </span>export-db<span class="w"> </span>--file<span class="o">=</span>/tmp/db.sql.gz
<a id="__codelineno-0-2" name="__codelineno-0-2" href="#__codelineno-0-2"></a>ddev<span class="w"> </span>export-db<span class="w"> </span>--gzip<span class="o">=</span><span class="nb">false</span><span class="w"> </span>--file<span class="o">=</span>/tmp/db.sql
<a id="__codelineno-0-3" name="__codelineno-0-3" href="#__codelineno-0-3"></a>ddev<span class="w"> </span>export-db<span class="w"> </span>&gt;/tmp/db.sql.gz
</code></pre></div> <h2 id="ddev-import-files"><code>ddev import-files</code><a class="headerlink" href="#ddev-import-files" title="Permanent link">¶</a></h2> <p>To import static file assets for a project, such as uploaded images and documents, use the command <a href="../commands/#import-files"><code>ddev import-files</code></a>. This command will prompt you to specify the location of your import asset, then import the assets into the project’s upload directory. To define a custom upload directory, set the <a href="../../configuration/config/#upload_dirs"><code>upload_dirs</code></a> config option. If no custom upload directory is defined, the default will be used:</p> <ul> <li>For Backdrop projects, this is <code>files</code>.</li> <li>For Drupal projects, this is <code>sites/default/files</code>.</li> <li>For Magento 1 projects, this is the <code>media</code> directory.</li> <li>For Magento 2 projects, this is the <code>pub/media</code> directory.</li> <li>For Shopware projects, this is the <code>media</code> directory.</li> <li>For TYPO3 projects, this is the <code>fileadmin</code> directory.</li> <li>For WordPress projects, this is the <code>wp-content/uploads</code> directory.</li> </ul> <p>Other project types need a custom configuration to be able to use this command.</p> <div class="highlight"><pre id="__code_1"><span></span><button class="md-clipboard md-icon" title="Copy to clipboard" data-clipboard-target="#__code_1 > code"></button><code tabindex="0"><a id="__codelineno-1-1" name="__codelineno-1-1" href="#__codelineno-1-1"></a>$<span class="w"> </span>ddev<span class="w"> </span>import-files
<a id="__codelineno-1-2" name="__codelineno-1-2" href="#__codelineno-1-2"></a>Provide<span class="w"> </span>the<span class="w"> </span>path<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span><span class="nb">source</span><span class="w"> </span>directory<span class="w"> </span>or<span class="w"> </span>archive<span class="w"> </span>you<span class="w"> </span>wish<span class="w"> </span>to<span class="w"> </span>import.
<a id="__codelineno-1-3" name="__codelineno-1-3" href="#__codelineno-1-3"></a>Please<span class="w"> </span>note:<span class="w"> </span><span class="k">if</span><span class="w"> </span>the<span class="w"> </span>destination<span class="w"> </span>directory<span class="w"> </span>exists,<span class="w"> </span>it<span class="w"> </span>will<span class="w"> </span>be<span class="w"> </span>emptied<span class="w"> </span>and<span class="w"> </span>replaced<span class="w"> </span>with<span class="w"> </span>the
<a id="__codelineno-1-4" name="__codelineno-1-4" href="#__codelineno-1-4"></a>import<span class="w"> </span>assets<span class="w"> </span>specified<span class="w"> </span>here.
<a id="__codelineno-1-5" name="__codelineno-1-5" href="#__codelineno-1-5"></a>Path<span class="w"> </span>to<span class="w"> </span>file<span class="o">(</span>s<span class="o">)</span>:<span class="w"> </span>~/workspace/d10/.tarballs/files.tgz
<a id="__codelineno-1-6" name="__codelineno-1-6" href="#__codelineno-1-6"></a>You<span class="w"> </span>provided<span class="w"> </span>an<span class="w"> </span>archive.<span class="w"> </span>Do<span class="w"> </span>you<span class="w"> </span>want<span class="w"> </span>to<span class="w"> </span>extract<span class="w"> </span>from<span class="w"> </span>a<span class="w"> </span>specific<span class="w"> </span>path<span class="w"> </span><span class="k">in</span><span class="w"> </span>your
<a id="__codelineno-1-7" name="__codelineno-1-7" href="#__codelineno-1-7"></a>archive?<span class="w"> </span>You<span class="w"> </span>may<span class="w"> </span>leave<span class="w"> </span>this<span class="w"> </span>blank<span class="w"> </span><span class="k">if</span><span class="w"> </span>you<span class="w"> </span>wish<span class="w"> </span>to<span class="w"> </span>use<span class="w"> </span>the<span class="w"> </span>full<span class="w"> </span>archive<span class="w"> </span>contents.
<a id="__codelineno-1-8" name="__codelineno-1-8" href="#__codelineno-1-8"></a>Archive<span class="w"> </span>extraction<span class="w"> </span>path:
<a id="__codelineno-1-9" name="__codelineno-1-9" href="#__codelineno-1-9"></a>Successfully<span class="w"> </span>imported<span class="w"> </span>files<span class="w"> </span><span class="k">for</span><span class="w"> </span>d10
</code></pre></div> <p><code>ddev import-files</code> supports the following file types: <code>.tar</code>, <code>.tar.gz</code>, <code>.tar.xz</code>, <code>.tar.bz2</code>, <code>.tgz</code>, or <code>.zip</code>.</p> <p>It can also import a directory containing static assets.</p> <p>If using a Tar or ZIP archive, the archive should contain <em>only the files inside the files directory</em>. For example in a Drupal site with files at <code>sites/default/files</code>, the archive should only contain the contents of the <code>files</code> directory; it should not contain a single <code>files</code> directory. To do this with the <code>tar</code> command, <code>cd</code> into the directory and create the archive there. An example Tar file creation is:</p> <div class="highlight"><pre id="__code_2"><span></span><button class="md-clipboard md-icon" title="Copy to clipboard" data-clipboard-target="#__code_2 > code"></button><code><a id="__codelineno-2-1" name="__codelineno-2-1" href="#__codelineno-2-1"></a><span class="nb">cd</span><span class="w"> </span>web/sites/default/files
<a id="__codelineno-2-2" name="__codelineno-2-2" href="#__codelineno-2-2"></a>tar<span class="w"> </span>-czf<span class="w"> </span>~/Downloads/files.tgz<span class="w"> </span>.
</code></pre></div> <p>If you want to use <code>import-files</code> without answering prompts, use the <code>--source</code> or <code>-s</code> flag to provide the path to the import asset. If you’re importing an archive, and wish to specify the path within the archive to extract, you can use the <code>--extract-path</code> flag in conjunction with the <code>--source</code> flag. Example:</p> <p><code>ddev import-files --source=/tmp/files.tgz</code></p> <p>When multiple <code>upload_dirs</code> are defined and you want to import to another upload dir than the first one, use the <code>--target</code> or <code>-t</code> flag to provide the path to the desired upload dir:</p> <p><code>ddev import-files --target=../private --source=/tmp/files.tgz</code></p> <p>See <code>ddev help import-files</code> for more examples.</p> <h2 id="snapshotting-and-restoring-a-database">Snapshotting and Restoring a Database<a class="headerlink" href="#snapshotting-and-restoring-a-database" title="Permanent link">¶</a></h2> <p>The project database is stored in a Docker volume, but can be snapshotted (and later restored) with the <a href="../commands/#snapshot"><code>ddev snapshot</code></a> command. A snapshot is automatically taken when you run <a href="../commands/#stop"><code>ddev stop --remove-data</code></a>. For example:</p> <div class="highlight"><pre id="__code_3"><span></span><button class="md-clipboard md-icon" title="Copy to clipboard" data-clipboard-target="#__code_3 > code"></button><code><a id="__codelineno-3-1" name="__codelineno-3-1" href="#__codelineno-3-1"></a>ddev<span class="w"> </span>snapshot
<a id="__codelineno-3-2" name="__codelineno-3-2" href="#__codelineno-3-2"></a>Creating<span class="w"> </span>database<span class="w"> </span>snapshot<span class="w"> </span>d9_20220107124831-mariadb_10.3.gz
<a id="__codelineno-3-3" name="__codelineno-3-3" href="#__codelineno-3-3"></a>Created<span class="w"> </span>database<span class="w"> </span>snapshot<span class="w"> </span>d9_20220107124831-mariadb_10.3.gz
<a id="__codelineno-3-4" name="__codelineno-3-4" href="#__codelineno-3-4"></a>
<a id="__codelineno-3-5" name="__codelineno-3-5" href="#__codelineno-3-5"></a>ddev<span class="w"> </span>snapshot<span class="w"> </span>restore<span class="w"> </span>d9_20220107124831
<a id="__codelineno-3-6" name="__codelineno-3-6" href="#__codelineno-3-6"></a>Stopping<span class="w"> </span>db<span class="w"> </span>container<span class="w"> </span><span class="k">for</span><span class="w"> </span>snapshot<span class="w"> </span>restore<span class="w"> </span>of<span class="w"> </span><span class="s1">'d9_20220107124831-mariadb_10.3.gz'</span>...
<a id="__codelineno-3-7" name="__codelineno-3-7" href="#__codelineno-3-7"></a>Restored<span class="w"> </span>database<span class="w"> </span>snapshot<span class="w"> </span>d9_20220107124831-mariadb_10.3.gz
</code></pre></div> <p>Snapshots are stored as gzipped files in the project’s <code>.ddev/db_snapshots</code> directory, and the file created for a snapshot can be renamed as necessary. For example, if you rename the above <code>d9_20220107124831-mariadb_10.3.gz</code> file to <code>working-before-migration-mariadb_10.3.gz</code>, then you can use <code>ddev snapshot restore working-before-migration</code>. (The description of the database type and version—<code>mariadb_10.3</code>, for example—must remain intact.) To restore the latest snapshot add the <code>--latest</code> flag (<code>ddev snapshot restore --latest</code>).</p> <p>List snapshots for an existing project with <code>ddev snapshot --list</code>. (Add the <code>--all</code> option for an exhaustive list; <code>ddev snapshot --list --all</code>.) You can remove all of them with <code>ddev snapshot --cleanup</code>, or remove a single snapshot with <code>ddev snapshot --cleanup --name &lt;snapshot-name&gt;</code>.</p> <div class="admonition tip"> <p class="admonition-title">Tip</p> <p>The default 120-second timeout may be inadequate for restores with very large snapshots or slower systems. You can increase this timeout by setting <a href="../../configuration/config/#default_container_timeout"><code>default_container_timeout</code></a> to a higher value.</p> <p>A timeout doesn’t necessarily mean the restore failed; you can watch the snapshot restore complete by running <code>ddev logs -s db</code>.</p> </div> <h2 id="interacting-with-your-project">Interacting with Your Project<a class="headerlink" href="#interacting-with-your-project" title="Permanent link">¶</a></h2> <p>DDEV provides several commands to facilitate interacting with your project in the development environment. These commands can be run within the working directory of your project while the project is running in DDEV.</p> <h3 id="executing-commands-in-containers">Executing Commands in Containers<a class="headerlink" href="#executing-commands-in-containers" title="Permanent link">¶</a></h3> <p>The <a href="../commands/#exec"><code>ddev exec</code></a> command allows you to run shell commands in the container for a DDEV service. By default, commands are executed on the web service container, in the docroot path of your project. This allows you to use <a href="../developer-tools/">the developer tools included in the web container</a>. For example, to run the <code>ls</code> command in the web container, you would run <code>ddev exec ls</code> or <code>ddev . ls</code>.</p> <p>To run a shell command in the container for a different service, use the <code>--service</code> (or <code>-s</code>) flag at the beginning of your <code>exec</code> command to specify the service the command should be run against. For example, to run the MySQL client in the database, container, you would run <code>ddev exec --service db mysql</code>. To specify the directory in which a shell command will be run, use the <code>--dir</code> flag. For example, to see the contents of the <code>/usr/bin</code> directory, you would run <code>ddev exec --dir /usr/bin ls</code>.</p> <p>To run privileged commands, sudo can be passed into <code>ddev exec</code>. For example, to update the container’s apt package lists, use <code>ddev exec sudo apt-get update</code>.</p> <p>Commands can also be executed using the shorter <code>ddev . &lt;cmd&gt;</code> alias.</p> <p>Normally, <code>ddev exec</code> commands are executed in the container using Bash, which means that environment variables and redirection and pipes can be used. For example, a complex command like <code>ddev exec 'ls -l ${DDEV_FILES_DIR} | grep x &gt;/tmp/junk.out'</code> will be interpreted by Bash and will work. However, there are cases where Bash introduces too much complexity and it’s best to run the command directly. In those cases, something like <code>ddev exec --raw ls -l "dir1" "dir2"</code> may be useful. With <code>--raw</code>, the <code>ls</code> command is executed directly instead of the full command being interpreted by Bash. But you cannot use environment variables, pipes, redirection, etc.</p> <h3 id="ssh-into-containers">SSH Into Containers<a class="headerlink" href="#ssh-into-containers" title="Permanent link">¶</a></h3> <p>The <a href="../commands/#ssh"><code>ddev ssh</code></a> command opens an interactive Bash or sh shell session to the container for a DDEV service. The web service is connected by default, and the session can be ended by typing <code>exit</code>. To connect to another service, use the <code>--service</code> flag to specify the service you want to connect to. For example, to connect to the database container, you would run <code>ddev ssh --service db</code>. To specify the destination directory, use the <code>--dir</code> flag. For example, to connect to the database container and be placed into the <code>/home</code> directory, you would run <code>ddev ssh --service db --dir /home</code>.</p> <p>You can also use your personal SSH keys within the web container. Run <code>ddev auth ssh</code> to add the keys from your <code>~/.ssh</code> directory and provide a passphrase, and those keys will be usable from within the web container. You generally only have to <code>ddev auth ssh</code> one time per computer reboot. This is a very popular approach for accessing private Composer repositories, or for using <code>drush</code> aliases against remote servers.</p> <h3 id="ddev-logs"><code>ddev logs</code><a class="headerlink" href="#ddev-logs" title="Permanent link">¶</a></h3> <p>The <a href="../commands/#logs"><code>ddev logs</code></a> command allows you to easily view error logs from the web container (both nginx/Apache and php-fpm logs are concatenated). To follow the logs in real time, run <code>ddev logs -f</code>. When you’re done, press <kbd>CTRL</kbd> + <kbd>C</kbd> to exit the log trail. Similarly, <code>ddev logs -s db</code> will show logs from a running or stopped database container.</p> <h2 id="stopping-a-project">Stopping a Project<a class="headerlink" href="#stopping-a-project" title="Permanent link">¶</a></h2> <p>To remove a project’s containers, run <a href="../commands/#stop"><code>ddev stop</code></a> in the project’s working directory. To remove any running project’s containers regardless of context, specify the project name as an argument: <code>ddev stop &lt;projectname&gt;</code>.</p> <p><code>ddev stop</code> is <em>not</em> destructive. It removes the Docker containers but does not remove the database for the project, and does nothing to your code. This allows you to have many configured projects with databases loaded without wasting Docker containers on unused projects. <strong><code>ddev stop</code> does not affect the project codebase and files.</strong></p> <p>To remove the imported database for a project, use the flag <code>--remove-data</code>, as in <code>ddev stop --remove-data</code>. This command will destroy both the containers and the imported database contents.</p> <aside class="md-source-file"> <span class="md-source-file__fact"> <span class="md-icon" title="Last update"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"></path></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date">December 2, 2024</span> </span> </aside> </article> </div> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type="button" class="md-top md-icon" data-md-component="top" hidden="" style="top: 64px;"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"></path></svg> Back to top </button> </main> <footer class="md-footer"> <nav class="md-footer__inner md-grid" aria-label="Footer"> <a href="../" class="md-footer__link md-footer__link--prev" aria-label="Previous: Usage"> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"></path></svg> </div> <div class="md-footer__title"> <span class="md-footer__direction"> Previous </span> <div class="md-ellipsis"> Usage </div> </div> </a> <a href="../database-management/" class="md-footer__link md-footer__link--next" aria-label="Next: Database Management"> <div class="md-footer__title"> <span class="md-footer__direction"> Next </span> <div class="md-ellipsis"> Database Management </div> </div> <div class="md-footer__button md-icon"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M4 11v2h12l-5.5 5.5 1.42 1.42L19.84 12l-7.92-7.92L10.5 5.5 16 11z"></path></svg> </div> </a> </nav> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class="md-copyright"> <div class="md-copyright__highlight"> DDEV Foundation </div> </div> <div class="md-social"> <a href="https://github.com/ddev/ddev" target="_blank" rel="noopener" title="github.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"></path></svg> </a> <a href="https://ddev.com/s/discord" target="_blank" rel="noopener" title="ddev.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M524.531 69.836a1.5 1.5 0 0 0-.764-.7A485 485 0 0 0 404.081 32.03a1.82 1.82 0 0 0-1.923.91 338 338 0 0 0-14.9 30.6 447.9 447.9 0 0 0-134.426 0 310 310 0 0 0-15.135-30.6 1.89 1.89 0 0 0-1.924-.91 483.7 483.7 0 0 0-119.688 37.107 1.7 1.7 0 0 0-.788.676C39.068 183.651 18.186 294.69 28.43 404.354a2.02 2.02 0 0 0 .765 1.375 487.7 487.7 0 0 0 146.825 74.189 1.9 1.9 0 0 0 2.063-.676A348 348 0 0 0 208.12 430.4a1.86 1.86 0 0 0-1.019-2.588 321 321 0 0 1-45.868-21.853 1.885 1.885 0 0 1-.185-3.126 251 251 0 0 0 9.109-7.137 1.82 1.82 0 0 1 1.9-.256c96.229 43.917 200.41 43.917 295.5 0a1.81 1.81 0 0 1 1.924.233 235 235 0 0 0 9.132 7.16 1.884 1.884 0 0 1-.162 3.126 301.4 301.4 0 0 1-45.89 21.83 1.875 1.875 0 0 0-1 2.611 391 391 0 0 0 30.014 48.815 1.86 1.86 0 0 0 2.063.7A486 486 0 0 0 610.7 405.729a1.88 1.88 0 0 0 .765-1.352c12.264-126.783-20.532-236.912-86.934-334.541M222.491 337.58c-28.972 0-52.844-26.587-52.844-59.239s23.409-59.241 52.844-59.241c29.665 0 53.306 26.82 52.843 59.239 0 32.654-23.41 59.241-52.843 59.241m195.38 0c-28.971 0-52.843-26.587-52.843-59.239s23.409-59.241 52.843-59.241c29.667 0 53.307 26.82 52.844 59.239 0 32.654-23.177 59.241-52.844 59.241"></path></svg> </a> <a href="https://stackoverflow.com/tags/ddev" target="_blank" rel="noopener" title="stackoverflow.com" class="md-social__link"> <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!-- Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M290.7 311 95 269.7 86.8 309l195.7 41zm51-87L188.2 95.7l-25.5 30.8 153.5 128.3zm-31.2 39.7L129.2 179l-16.7 36.5L293.7 300zM262 32l-32 24 119.3 160.3 32-24zm20.5 328h-200v39.7h200zm39.7 80H42.7V320h-40v160h359.5V320h-40z"></path></svg> </a> </div> </div> </div> </footer> </div> <div class="md-dialog" data-md-component="dialog"> <div class="md-dialog__inner md-typeset"></div> </div> <script id="__config" type="application/json">{"base": "../../..", "features": ["content.action.edit", "content.code.copy", "navigation.expand", "navigation.indexes", "navigation.sections", "navigation.tabs", "navigation.top", "navigation.tracking", "navigation.footer", "search.suggest"], "search": "../../../assets/javascripts/workers/search.6ce7567c.min.js", "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": "stable"}</script> <script src="../../../assets/javascripts/bundle.83f73b43.min.js"></script> <script src="../../../assets/jquery-3.5.1.min.js"></script> <script src="../../../assets/temp-fix-header-links-in-tabs.js"></script>  <readthedocs-flyout></readthedocs-flyout><readthedocs-notification class="raised toast"></readthedocs-notification><readthedocs-search class="raised floating"></readthedocs-search><readthedocs-hotkeys></readthedocs-hotkeys></body></html>