github.com/ddev/ddev@v1.23.2-0.20240519125000-d824ffe36ff3/pkg/ddevapp/schema.json (about)

     1  {
     2    "$id": "https://json.schemastore.org/base.json",
     3    "$schema": "http://json-schema.org/draft-07/schema#",
     4    "title": "DDEV project config",
     5    "description": "Schema for DDEV project's config.yaml",
     6    "type": "object",
     7    "additionalProperties": false,
     8    "definitions": {
     9      "DdevTask": {
    10        "type": "array",
    11        "items": {
    12          "type": "object",
    13          "properties": {
    14            "exec": {
    15              "type": "string"
    16            },
    17            "exec-host": {
    18              "type": "string"
    19            },
    20            "composer": {
    21              "type": "string"
    22            }
    23          }
    24        }
    25      }
    26    },
    27    "properties": {
    28      "additional_fqdns": {
    29        "description": "A comma-delimited list of FQDNs for the project.",
    30        "type": "array",
    31        "items": {
    32          "type": "string"
    33        },
    34        "uniqueItems": true
    35      },
    36      "additional_hostnames": {
    37        "description": "A comma-delimited list of hostnames for the project.",
    38        "type": "array",
    39        "items": {
    40          "type": "string"
    41        },
    42        "uniqueItems": true
    43      },
    44      "bind_all_interfaces": {
    45        "description": "Bind host ports on all interfaces, not just on localhost network interface.",
    46        "type": "boolean"
    47      },
    48      "composer_root": {
    49        "description": "The relative path, from the project root, to the directory containing composer.json. (This is where all Composer-related commands are executed.)",
    50        "type": "string"
    51      },
    52      "composer_version": {
    53        "description": "Composer version for the web container and the ddev composer command.",
    54        "type": "string"
    55      },
    56      "corepack_enable": {
    57        "description": "Whether to \"corepack enable\" on Node.js configuration.",
    58        "type": "boolean"
    59      },
    60      "database": {
    61        "description": "Specify the database type and version to use.",
    62        "type": "object",
    63        "properties": {
    64          "type": {
    65            "description": "Specify the database type to use.",
    66            "type": "string",
    67            "enum": [
    68              "mariadb",
    69              "mysql",
    70              "postgres"
    71            ]
    72          },
    73          "version": {
    74            "description": "Specify the database version to use.",
    75            "type": "string"
    76          }
    77        }
    78      },
    79      "dbimage_extra_packages": {
    80        "description": "A list of Debian packages that should be added to db container when the project is started.",
    81        "type": "array",
    82        "items": {
    83          "type": "string"
    84        },
    85        "uniqueItems": true
    86      },
    87      "ddev_version_constraint": {
    88        "description": "Validate that ddev version being used is valid within this constraint.",
    89        "type": "string"
    90      },
    91      "default_container_timeout": {
    92        "description": "Seconds DDEV will wait for all containers to become ready.",
    93        "type": [
    94          "integer",
    95          "string"
    96        ]
    97      },
    98      "disable_settings_management": {
    99        "description": "Prevent ddev from creating or updating CMS settings files.",
   100        "type": "boolean"
   101      },
   102      "disable_upload_dirs_warning": {
   103        "description": "Whether to disable the standard warning issued when a project is using performance_mode: mutagen but upload_dirs is not configured.",
   104        "type": "boolean"
   105      },
   106      "docroot": {
   107        "description": "Provide the relative docroot of the project, like 'docroot' or 'htdocs' or 'web', defaults to empty, the current directory.",
   108        "type": "string"
   109      },
   110      "fail_on_hook_fail": {
   111        "description": "Decide whether 'ddev start' should be interrupted by a failing hook.",
   112        "type": "boolean"
   113      },
   114      "hooks": {
   115        "description": "Run tasks before or after main DDEV commands are executed.",
   116        "type": "object",
   117        "properties": {
   118          "pre-start": {
   119            "$ref": "#/definitions/DdevTask"
   120          },
   121          "post-start": {
   122            "$ref": "#/definitions/DdevTask"
   123          },
   124          "pre-import-db": {
   125            "$ref": "#/definitions/DdevTask"
   126          },
   127          "post-import-db": {
   128            "$ref": "#/definitions/DdevTask"
   129          },
   130          "pre-import-files": {
   131            "$ref": "#/definitions/DdevTask"
   132          },
   133          "post-import-files": {
   134            "$ref": "#/definitions/DdevTask"
   135          },
   136          "pre-composer": {
   137            "$ref": "#/definitions/DdevTask"
   138          },
   139          "post-composer": {
   140            "$ref": "#/definitions/DdevTask"
   141          },
   142          "pre-stop": {
   143            "$ref": "#/definitions/DdevTask"
   144          },
   145          "pre-config": {
   146            "$ref": "#/definitions/DdevTask"
   147          },
   148          "post-config": {
   149            "$ref": "#/definitions/DdevTask"
   150          },
   151          "pre-exec": {
   152            "$ref": "#/definitions/DdevTask"
   153          },
   154          "post-exec": {
   155            "$ref": "#/definitions/DdevTask"
   156          },
   157          "pre-pause": {
   158            "$ref": "#/definitions/DdevTask"
   159          },
   160          "post-pause": {
   161            "$ref": "#/definitions/DdevTask"
   162          },
   163          "pre-pull": {
   164            "$ref": "#/definitions/DdevTask"
   165          },
   166          "post-pull": {
   167            "$ref": "#/definitions/DdevTask"
   168          },
   169          "pre-push": {
   170            "$ref": "#/definitions/DdevTask"
   171          },
   172          "post-push": {
   173            "$ref": "#/definitions/DdevTask"
   174          },
   175          "pre-snapshot": {
   176            "$ref": "#/definitions/DdevTask"
   177          },
   178          "post-snapshot": {
   179            "$ref": "#/definitions/DdevTask"
   180          },
   181          "pre-delete-snapshot": {
   182            "$ref": "#/definitions/DdevTask"
   183          },
   184          "post-delete-snapshot": {
   185            "$ref": "#/definitions/DdevTask"
   186          },
   187          "pre-restore-snapshot": {
   188            "$ref": "#/definitions/DdevTask"
   189          },
   190          "post-restore-snapshot": {
   191            "$ref": "#/definitions/DdevTask"
   192          },
   193          "post-stop": {
   194            "$ref": "#/definitions/DdevTask"
   195          }
   196        }
   197      },
   198      "host_db_port": {
   199        "description": "The db container's localhost-bound port.",
   200        "type": "string"
   201      },
   202      "host_https_port": {
   203        "description": "The web container's localhost-bound https port.",
   204        "type": "string"
   205      },
   206      "host_mailpit_port": {
   207        "description": "The mailpit localhost-bound port.",
   208        "type": "string"
   209      },
   210      "host_webserver_port": {
   211        "description": "The web container's localhost-bound port.",
   212        "type": "string"
   213      },
   214      "mailpit_http_port": {
   215        "description": "Router port to be used for mailpit access.",
   216        "type": "string"
   217      },
   218      "mailpit_https_port": {
   219        "description": "Router port to be used for mailpit access (https).",
   220        "type": "string"
   221      },
   222      "name": {
   223        "description": "Provide the name of the project to configure (normally the same as the last part of directory name).",
   224        "type": "string"
   225      },
   226      "ngrok_args": {
   227        "description": "Provide extra args to ngrok in ddev share.",
   228        "type": "string"
   229      },
   230      "no_project_mount": {
   231        "description": "Whether to skip mounting project into web container.",
   232        "type": "boolean"
   233      },
   234      "nodejs_version": {
   235        "description": "Node.js version for the web container's \"system\" version.",
   236        "type": "string"
   237      },
   238      "omit_containers": {
   239        "description": "A list of container types that should not be started when the project is started.",
   240        "type": "array",
   241        "items": {
   242          "type": "string",
   243          "enum": [
   244            "db",
   245            "ddev-ssh-agent"
   246          ]
   247        },
   248        "uniqueItems": true
   249      },
   250      "override_config": {
   251        "description": "Whether to override config values instead of merging.",
   252        "type": "boolean"
   253      },
   254      "performance_mode": {
   255        "description": "Defines the performance optimization mode to be used. Currently Mutagen asynchronous caching and NFS are supported. Mutagen is enabled by default on Mac and Windows.",
   256        "type": "string",
   257        "enum": [
   258          "global",
   259          "none",
   260          "mutagen",
   261          "nfs"
   262        ]
   263      },
   264      "php_version": {
   265        "description": "The PHP version the project should use.",
   266        "type": "string",
   267        "enum": [
   268          "5.6",
   269          "7.0",
   270          "7.1",
   271          "7.2",
   272          "7.3",
   273          "7.4",
   274          "8.0",
   275          "8.1",
   276          "8.2",
   277          "8.3"
   278        ]
   279      },
   280      "project_tld": {
   281        "description": "Set the top-level domain to be used for projects, defaults to ddev.site (default \"ddev.site\").",
   282        "type": "string"
   283      },
   284      "router_http_port": {
   285        "description": "The router HTTP port for this project.",
   286        "type": "string"
   287      },
   288      "router_https_port": {
   289        "description": "The router HTTPS port for this project.",
   290        "type": "string"
   291      },
   292      "timezone": {
   293        "description": "Specify timezone for containers and PHP.",
   294        "type": "string"
   295      },
   296      "type": {
   297        "description": "Provide the project type.",
   298        "type": "string",
   299        "enum": [
   300          "backdrop",
   301          "craftcms",
   302          "django4",
   303          "drupal",
   304          "drupal6",
   305          "drupal7",
   306          "drupal8",
   307          "drupal9",
   308          "drupal10",
   309          "laravel",
   310          "magento",
   311          "magento2",
   312          "php",
   313          "python",
   314          "shopware6",
   315          "silverstripe",
   316          "typo3",
   317          "wordpress"
   318        ]
   319      },
   320      "upload_dirs": {
   321        "description": "Sets multiple project upload directories, the first is taken as the destination directory of the import-files command.",
   322        "type": "array",
   323        "items": {
   324          "type": "string"
   325        }
   326      },
   327      "use_dns_when_possible": {
   328        "description": "Use DNS for hostname resolution instead of /etc/hosts when possible.",
   329        "type": "boolean"
   330      },
   331      "web_environment": {
   332        "description": "Add environment variables to the web container.",
   333        "type": "array",
   334        "items": {
   335          "type": "string"
   336        }
   337      },
   338      "web_extra_daemons": {
   339        "description": "Additional daemons that should automatically be started in the web container.",
   340        "type": "array",
   341        "items": {
   342          "type": "object",
   343          "additionalProperties": false,
   344          "properties": {
   345            "name": {
   346              "type": "string"
   347            },
   348            "command": {
   349              "type": "string"
   350            },
   351            "directory": {
   352              "type": "string"
   353            }
   354          }
   355        }
   356      },
   357      "web_extra_exposed_ports": {
   358        "description": "Additional named sets of ports to expose via ddev-router.",
   359        "type": "array",
   360        "items": {
   361          "type": "object",
   362          "additionalProperties": false,
   363          "properties": {
   364            "name": {
   365              "type": "string"
   366            },
   367            "container_port": {
   368              "type": "integer"
   369            },
   370            "http_port": {
   371              "type": "integer"
   372            },
   373            "https_port": {
   374              "type": "integer"
   375            }
   376          }
   377        }
   378      },
   379      "webimage": {
   380        "description": "Sets the web container image.",
   381        "type": "string"
   382      },
   383      "webimage_extra_packages": {
   384        "description": "A list of Debian packages that should be added to web container when the project is started.",
   385        "type": "array",
   386        "items": {
   387          "type": "string"
   388        }
   389      },
   390      "webserver_type": {
   391        "description": "Sets the project's desired webserver type.",
   392        "type": "string",
   393        "enum": [
   394          "nginx-fpm",
   395          "apache-fpm",
   396          "nginx-gunicorn"
   397        ]
   398      },
   399      "working_dir": {
   400        "description": "Override default project working directories for db and web service.",
   401        "type": "object",
   402        "properties": {
   403          "web": {
   404            "description": "Overrides the default working directory for the web service.",
   405            "type": "string"
   406          },
   407          "db": {
   408            "description": "Overrides the default working directory for the db service.",
   409            "type": "string"
   410          }
   411        }
   412      },
   413      "xdebug_enabled": {
   414        "description": "Whether or not Xdebug is enabled in the web container.",
   415        "type": "boolean"
   416      }
   417    }
   418  }