@lando/drupal 1.12.0 → 1.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (150) hide show
  1. package/.eslintignore +5 -0
  2. package/.lando.yml +1 -2
  3. package/CHANGELOG.md +26 -0
  4. package/LICENSE +21 -0
  5. package/README.md +20 -27
  6. package/builders/_drupaly.js +44 -19
  7. package/builders/drupal-mariadb.js +1 -1
  8. package/builders/drupal-mssql.js +1 -1
  9. package/builders/drupal-mysql.js +7 -1
  10. package/builders/drupal-nginx.js +1 -1
  11. package/builders/drupal-php.js +1 -3
  12. package/builders/drupal-postgres.js +1 -1
  13. package/config/drupal11/mysql8.cnf +44 -92
  14. package/inits/drupal10.js +5 -0
  15. package/inits/drupal11.js +7 -0
  16. package/inits/drupal6.js +4 -0
  17. package/inits/drupal7.js +3 -0
  18. package/inits/drupal8.js +3 -0
  19. package/inits/drupal9.js +5 -0
  20. package/netlify.toml +1 -1
  21. package/node_modules/@lando/mariadb/.lando.yml +1 -1
  22. package/node_modules/@lando/mariadb/.node-version +1 -1
  23. package/node_modules/@lando/mariadb/CHANGELOG.md +12 -1
  24. package/node_modules/@lando/mariadb/LICENSE +21 -0
  25. package/node_modules/@lando/mariadb/README.md +5 -2
  26. package/node_modules/@lando/mariadb/builders/mariadb.js +26 -22
  27. package/node_modules/@lando/mariadb/netlify.toml +9 -2
  28. package/node_modules/@lando/mariadb/package.json +8 -8
  29. package/node_modules/@lando/mysql/.lando.yml +1 -1
  30. package/node_modules/@lando/mysql/CHANGELOG.md +5 -0
  31. package/node_modules/@lando/mysql/LICENSE +21 -0
  32. package/node_modules/@lando/mysql/README.md +5 -2
  33. package/node_modules/@lando/mysql/builders/mysql.js +9 -5
  34. package/node_modules/@lando/mysql/netlify.toml +9 -0
  35. package/node_modules/@lando/mysql/package.json +8 -8
  36. package/node_modules/@lando/php/.lando.yml +1 -1
  37. package/node_modules/@lando/php/AGENTS.md +81 -0
  38. package/node_modules/@lando/php/CHANGELOG.md +31 -0
  39. package/node_modules/@lando/php/LICENSE +21 -0
  40. package/node_modules/@lando/php/README.md +9 -3
  41. package/node_modules/@lando/php/builders/php.js +39 -12
  42. package/node_modules/@lando/php/images/5.6-apache/Dockerfile +9 -4
  43. package/node_modules/@lando/php/images/5.6-fpm/Dockerfile +9 -4
  44. package/node_modules/@lando/php/images/7.0-apache/Dockerfile +9 -4
  45. package/node_modules/@lando/php/images/7.0-fpm/Dockerfile +9 -4
  46. package/node_modules/@lando/php/images/7.1-apache/Dockerfile +1 -1
  47. package/node_modules/@lando/php/images/7.1-fpm/Dockerfile +1 -1
  48. package/node_modules/@lando/php/images/7.2-apache/Dockerfile +1 -1
  49. package/node_modules/@lando/php/images/7.2-fpm/Dockerfile +1 -1
  50. package/node_modules/@lando/php/images/7.3-apache/Dockerfile +1 -1
  51. package/node_modules/@lando/php/images/7.3-fpm/Dockerfile +1 -1
  52. package/node_modules/@lando/php/images/7.4-apache/Dockerfile +2 -2
  53. package/node_modules/@lando/php/images/7.4-fpm/Dockerfile +2 -2
  54. package/node_modules/@lando/php/images/8.0-apache/Dockerfile +2 -2
  55. package/node_modules/@lando/php/images/8.0-fpm/Dockerfile +2 -2
  56. package/node_modules/@lando/php/images/8.1-apache/Dockerfile +1 -1
  57. package/node_modules/@lando/php/images/8.1-fpm/Dockerfile +1 -1
  58. package/node_modules/@lando/php/images/8.2-apache/Dockerfile +1 -1
  59. package/node_modules/@lando/php/images/8.2-fpm/Dockerfile +1 -1
  60. package/node_modules/@lando/php/images/8.3-apache/Dockerfile +23 -22
  61. package/node_modules/@lando/php/images/8.3-fpm/Dockerfile +22 -22
  62. package/node_modules/@lando/php/images/8.4-apache/Dockerfile +21 -22
  63. package/node_modules/@lando/php/images/8.4-fpm/Dockerfile +21 -22
  64. package/node_modules/@lando/php/images/8.5-apache/Dockerfile +77 -0
  65. package/node_modules/@lando/php/images/8.5-fpm/Dockerfile +78 -0
  66. package/node_modules/@lando/php/netlify.toml +10 -1
  67. package/node_modules/@lando/php/node_modules/@lando/nginx/.lando.yml +1 -1
  68. package/node_modules/@lando/php/node_modules/@lando/nginx/.node-version +1 -1
  69. package/node_modules/@lando/php/node_modules/@lando/nginx/CHANGELOG.md +9 -1
  70. package/node_modules/@lando/php/node_modules/@lando/nginx/LICENSE +21 -0
  71. package/node_modules/@lando/php/node_modules/@lando/nginx/README.md +5 -2
  72. package/node_modules/@lando/php/node_modules/@lando/nginx/builders/nginx.js +34 -15
  73. package/node_modules/@lando/php/node_modules/@lando/nginx/netlify.toml +9 -4
  74. package/node_modules/@lando/php/node_modules/@lando/nginx/package.json +8 -8
  75. package/node_modules/@lando/php/package.json +10 -10
  76. package/node_modules/@lando/php/scripts/install-db-client.sh +31 -0
  77. package/node_modules/@lando/php/scripts/mariadb-compat-install.sh +42 -0
  78. package/node_modules/@lando/php/scripts/mysql-client-install.sh +62 -0
  79. package/node_modules/@lando/postgres/.lando.yml +1 -1
  80. package/node_modules/@lando/postgres/CHANGELOG.md +15 -0
  81. package/node_modules/@lando/postgres/LICENSE +21 -0
  82. package/node_modules/@lando/postgres/README.md +5 -2
  83. package/node_modules/@lando/postgres/builders/postgres.js +11 -10
  84. package/node_modules/@lando/postgres/netlify.toml +9 -4
  85. package/node_modules/@lando/postgres/package.json +8 -8
  86. package/node_modules/semver/README.md +14 -4
  87. package/node_modules/semver/bin/semver.js +4 -1
  88. package/node_modules/semver/classes/comparator.js +2 -0
  89. package/node_modules/semver/classes/index.js +2 -0
  90. package/node_modules/semver/classes/range.js +2 -0
  91. package/node_modules/semver/classes/semver.js +22 -5
  92. package/node_modules/semver/functions/clean.js +2 -0
  93. package/node_modules/semver/functions/cmp.js +2 -0
  94. package/node_modules/semver/functions/coerce.js +2 -0
  95. package/node_modules/semver/functions/compare-build.js +2 -0
  96. package/node_modules/semver/functions/compare-loose.js +2 -0
  97. package/node_modules/semver/functions/compare.js +2 -0
  98. package/node_modules/semver/functions/diff.js +7 -12
  99. package/node_modules/semver/functions/eq.js +2 -0
  100. package/node_modules/semver/functions/gt.js +2 -0
  101. package/node_modules/semver/functions/gte.js +2 -0
  102. package/node_modules/semver/functions/inc.js +2 -0
  103. package/node_modules/semver/functions/lt.js +2 -0
  104. package/node_modules/semver/functions/lte.js +2 -0
  105. package/node_modules/semver/functions/major.js +2 -0
  106. package/node_modules/semver/functions/minor.js +2 -0
  107. package/node_modules/semver/functions/neq.js +2 -0
  108. package/node_modules/semver/functions/parse.js +2 -0
  109. package/node_modules/semver/functions/patch.js +2 -0
  110. package/node_modules/semver/functions/prerelease.js +2 -0
  111. package/node_modules/semver/functions/rcompare.js +2 -0
  112. package/node_modules/semver/functions/rsort.js +2 -0
  113. package/node_modules/semver/functions/satisfies.js +2 -0
  114. package/node_modules/semver/functions/sort.js +2 -0
  115. package/node_modules/semver/functions/valid.js +2 -0
  116. package/node_modules/semver/index.js +2 -0
  117. package/node_modules/semver/internal/constants.js +2 -0
  118. package/node_modules/semver/internal/debug.js +2 -0
  119. package/node_modules/semver/internal/identifiers.js +2 -0
  120. package/node_modules/semver/internal/lrucache.js +2 -0
  121. package/node_modules/semver/internal/parse-options.js +2 -0
  122. package/node_modules/semver/internal/re.js +10 -4
  123. package/node_modules/semver/package.json +8 -7
  124. package/node_modules/semver/preload.js +2 -0
  125. package/node_modules/semver/ranges/gtr.js +2 -0
  126. package/node_modules/semver/ranges/intersects.js +2 -0
  127. package/node_modules/semver/ranges/ltr.js +2 -0
  128. package/node_modules/semver/ranges/max-satisfying.js +2 -0
  129. package/node_modules/semver/ranges/min-satisfying.js +2 -0
  130. package/node_modules/semver/ranges/min-version.js +2 -0
  131. package/node_modules/semver/ranges/outside.js +2 -0
  132. package/node_modules/semver/ranges/simplify.js +2 -0
  133. package/node_modules/semver/ranges/subset.js +2 -0
  134. package/node_modules/semver/ranges/to-comparators.js +2 -0
  135. package/node_modules/semver/ranges/valid.js +2 -0
  136. package/package.json +13 -13
  137. package/LICENSE.md +0 -674
  138. package/PRIVACY.md +0 -169
  139. package/node_modules/@lando/mariadb/LICENSE.md +0 -674
  140. package/node_modules/@lando/mariadb/PRIVACY.md +0 -169
  141. package/node_modules/@lando/mariadb/tmpfile +0 -0
  142. package/node_modules/@lando/mysql/.tool-versions +0 -1
  143. package/node_modules/@lando/mysql/LICENSE.md +0 -674
  144. package/node_modules/@lando/mysql/PRIVACY.md +0 -169
  145. package/node_modules/@lando/php/LICENSE.md +0 -674
  146. package/node_modules/@lando/php/PRIVACY.md +0 -169
  147. package/node_modules/@lando/php/node_modules/@lando/nginx/LICENSE.md +0 -674
  148. package/node_modules/@lando/php/node_modules/@lando/nginx/PRIVACY.md +0 -169
  149. package/node_modules/@lando/postgres/LICENSE.md +0 -674
  150. package/node_modules/@lando/postgres/PRIVACY.md +0 -169
package/.eslintignore CHANGED
@@ -3,3 +3,8 @@ cache
3
3
  dist
4
4
  _site
5
5
  !.vitepress
6
+
7
+ # Examples are executable integration specs; they can generate full Drupal codebases under examples/*/*
8
+ # which include their own ESLint config/deps that we do not install in this repo.
9
+ examples/**
10
+ examples/*/*/**
package/.lando.yml CHANGED
@@ -5,7 +5,7 @@ proxy:
5
5
  services:
6
6
  cli:
7
7
  api: 4
8
- image: node:18
8
+ image: node:20
9
9
  command: sleep infinity
10
10
  ports:
11
11
  - 5173:5173/http
@@ -22,4 +22,3 @@ tooling:
22
22
  vitepress:
23
23
  service: cli
24
24
  cmd: npx vitepress
25
-
package/CHANGELOG.md CHANGED
@@ -1,5 +1,31 @@
1
1
  ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
2
2
 
3
+ ## v1.14.0 - [February 19, 2026](https://github.com/lando/drupal/releases/tag/v1.14.0)
4
+
5
+ * Added `drush_uri` configuration option to set `DRUSH_OPTIONS_URI` environment variable in the appserver service with SSL support
6
+ * Updated `@lando/php` to `^1.11.0` for MySQL client auto-detection fix
7
+ * Updated to [@lando/php@1.10.0](https://github.com/lando/php/releases/tag/v1.10.0)
8
+ * Updated to [@lando/mariadb@1.8.0](https://github.com/lando/mariadb/releases/tag/v1.8.0)
9
+ * Updated to [@lando/postgres@1.6.0](https://github.com/lando/postgres/releases/tag/v1.6.0)
10
+ * Updated to [@lando/argv@1.2.0](https://github.com/lando/argv/releases/tag/v1.2.0)
11
+ * Fixed release workflow to trigger npm publish on `published` event
12
+ * Fixed drupal-multisite docs [#175](https://github.com/lando/drupal/pull/175)
13
+ * Updated documented dependency versions
14
+ * Updated supported PHP version range to 8.5+
15
+ * Added dependabot config
16
+ * Bumped actions group (checkout, setup-node, cache)
17
+
18
+ ## v1.13.0 - [September 17, 2025](https://github.com/lando/drupal/releases/tag/v1.13.0)
19
+
20
+ * Added default config values to the `.lando.yml` file after init.
21
+ * Switched images to [bitnamilegacy](https://github.com/bitnami/containers/issues/83267) namespace
22
+ * Updated to [@lando/mariadb@1.7.0](https://github.com/lando/mariadb/releases/tag/v1.7.0)
23
+ * Updated to [@lando/mysql@1.6.0](https://github.com/lando/mysql/releases/tag/v1.6.0)
24
+ * Updated to [@lando/php@1.8.0](https://github.com/lando/php/releases/tag/v1.8.0)
25
+ * Updated to [@lando/postgres@1.5.0](https://github.com/lando/postgres/releases/tag/v1.5.0)
26
+ * Updated default `nginx` version to `1.29`
27
+ * Updated MySQL config for better MySQL 8.4 support.
28
+
3
29
  ## v1.12.0 - [January 16, 2025](https://github.com/lando/drupal/releases/tag/v1.12.0)
4
30
 
5
31
  * Updated globally installed Drush to `v8.5.0`.
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Lando Alliance
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  This is the _official_ [Lando](https://lando.dev) plugin for [Drupal](https://www.drupal.org/). When installed it...
4
4
 
5
5
  * Allows users to run `drupal` cms
6
- * Allows users to configure `php` version from `5.3` all the way to `8.3`
6
+ * Allows users to configure `php` version from `5.3` all the way to `8.5+`
7
7
  * Allows users to configure `webroot`
8
8
  * Allows users to configure web server to (`apache` or `nginx`)
9
9
  * Allows users to configure database backend to (`mariadb`, `mysql`, or `postgres`)
@@ -15,11 +15,15 @@ Of course, once a user is running their Drupal project with Lando they can take
15
15
 
16
16
  ## Basic Usage
17
17
 
18
- Add a `drupal9` recipe to your Landofile
18
+ Add a `drupal11` recipe to your Landofile
19
19
 
20
20
  ```yaml
21
- name: Drupal 9
22
- recipe: drupal9
21
+ name: Drupal 11
22
+ recipe: drupal11
23
+ config:
24
+ php: 8.3
25
+ via: apache:2.4
26
+ database: mysql:8.0
23
27
  ```
24
28
 
25
29
  For more info you should check out the [docs](https://docs.lando.dev/drupal):
@@ -35,14 +39,11 @@ For more info you should check out the [docs](https://docs.lando.dev/drupal):
35
39
  ```bash
36
40
  # With npm
37
41
  npm install @lando/drupal
38
-
39
- # With yarn
40
- yarn add @lando/drupal
41
42
  ```
42
43
 
43
44
  ## Issues, Questions and Support
44
45
 
45
- If you have a question or would like some community support we recommend you [join us on Slack](https://launchpass.com/devwithlando). Note that this is the Slack community for [Lando](https://lando.dev) but we are more than happy to help with this module as well!
46
+ If you have a question or would like some community support we recommend you [join us on Slack](https://launchpass.com/devwithlando).
46
47
 
47
48
  If you'd like to report a bug or submit a feature request then please [use the issue queue](https://github.com/lando/drupal/issues/new/choose) in this repo.
48
49
 
@@ -53,40 +54,27 @@ We try to log all changes big and small in both [THE CHANGELOG](https://github.c
53
54
 
54
55
  ## Development
55
56
 
56
- * Requires [Node 14+](https://nodejs.org/dist/latest-v14.x/)
57
- * Prefers [Yarn](https://classic.yarnpkg.com/lang/en/docs/install)
58
-
59
- ```bash
60
- git clone https://github.com/lando/drupal.git && cd drupal
61
- yarn install
62
- ```
63
-
64
- If you don't want to install Node 18 or Yarn for whatever reason you can install [Lando](https://docs.lando.dev/basics/installation.html) and use that:
57
+ * Requires [Node 20+](https://nodejs.org/dist/latest-v20.x/)
65
58
 
66
59
  ```bash
67
60
  git clone https://github.com/lando/drupal.git && cd drupal
68
- # Install deps and get node
69
- lando start
70
-
71
- # Run commands
72
- lando node
73
- lando yarn
61
+ npm install
74
62
  ```
75
63
 
76
64
  ## Testing
77
65
 
78
66
  ```bash
79
67
  # Lint the code
80
- yarn lint
68
+ npm run lint
81
69
 
82
70
  # Run unit tests
83
- yarn test
71
+ npm test
84
72
  ```
85
73
 
86
74
  ## Releasing
87
75
 
88
76
  ```bash
89
- yarn release
77
+ npm release
90
78
  ```
91
79
 
92
80
 
@@ -94,6 +82,7 @@ yarn release
94
82
 
95
83
  * [@pirog](https://github.com/pirog)
96
84
  * [@reynoldsalec](https://github.com/reynoldsalec)
85
+ * [@AaronFeledy](https://github.com/AaronFeledy)
97
86
 
98
87
  ## Contributors
99
88
 
@@ -105,4 +94,8 @@ Made with [contributors-img](https://contrib.rocks).
105
94
 
106
95
  ## Other Resources
107
96
 
108
- * [Important advice](https://www.youtube.com/watch?v=WA4iX5D9Z64)
97
+ * [LICENSE](/LICENSE)
98
+ * [TERMS OF USE](https://docs.lando.dev/terms)
99
+ * [PRIVACY POLICY](https://docs.lando.dev/privacy)
100
+ * [CODE OF CONDUCT](https://docs.lando.dev/coc)
101
+
@@ -147,7 +147,7 @@ const getServices = options => ({
147
147
  },
148
148
  database: {
149
149
  config: getServiceConfig(options, ['database']),
150
- authentication: 'mysql_native_password',
150
+ authentication: '',
151
151
  type: `drupal-${options.database}`,
152
152
  portforward: true,
153
153
  creds: {
@@ -162,13 +162,11 @@ const getServices = options => ({
162
162
  * Helper to get the phar build command
163
163
  */
164
164
  const getDbTooling = database => {
165
- // Make sure we strip out any version number
166
- const db = database.split(':')[0];
167
- const ver = database.split(':')[1];
165
+ const [db, ver] = database.split(':');
168
166
  // Choose wisely
169
167
  if (db === 'mysql') {
170
168
  return {mysql: mysqlCli};
171
- } else if (db === 'mariadb' && ver < 10.4) {
169
+ } else if (db === 'mariadb' && semver.lt(semver.coerce(ver), '10.4.0')) {
172
170
  // Use mysql command for MariaDB 10.3.x and below
173
171
  return {mysql: mysqlCli};
174
172
  } else if (db === 'mariadb') {
@@ -176,10 +174,12 @@ const getDbTooling = database => {
176
174
  } else if (db === 'postgres') {
177
175
  return {psql: postgresCli};
178
176
  } else if (db === 'mongo') {
179
- return {mongo: {
180
- service: 'database',
181
- description: 'Drop into the mongo shell',
182
- }};
177
+ return {
178
+ mongo: {
179
+ service: 'database',
180
+ description: 'Drop into the mongo shell',
181
+ },
182
+ };
183
183
  }
184
184
  };
185
185
 
@@ -228,22 +228,26 @@ module.exports = {
228
228
  composer: {},
229
229
  confSrc: __dirname,
230
230
  config: {},
231
- database: 'mysql',
231
+ database: 'mysql:5.7',
232
232
  defaultFiles: {
233
233
  php: 'php.ini',
234
234
  },
235
235
  php: '7.2',
236
- tooling: {drush: {
237
- service: 'appserver',
238
- }},
239
- via: 'apache',
236
+ tooling: {
237
+ drush: {
238
+ service: 'appserver',
239
+ },
240
+ },
241
+ via: 'apache:2.4',
240
242
  webroot: '.',
241
243
  xdebug: false,
242
244
  proxy: {},
245
+ drush_uri: null,
243
246
  },
244
247
  builder: (parent, config) => class LandoDrupal extends parent {
245
248
  constructor(id, options = {}) {
246
249
  options = _.merge({}, config, options);
250
+
247
251
  // Set the default drush version if we don't have it
248
252
  if (!_.has(options, 'drush')) options.drush = (options.php === '5.3') ? DRUSH7 : DRUSH8;
249
253
 
@@ -264,12 +268,16 @@ module.exports = {
264
268
  }
265
269
 
266
270
  // Set legacy envars
267
- options.services = _.merge({}, options.services, {appserver: {overrides: {
268
- environment: {
269
- SIMPLETEST_BASE_URL: (options.via === 'nginx') ? 'https://appserver_nginx' : 'https://appserver',
270
- SIMPLETEST_DB: `mysql://${options.recipe}:${options.recipe}@database/${options.recipe}`,
271
+ options.services = _.merge({}, options.services, {
272
+ appserver: {
273
+ overrides: {
274
+ environment: {
275
+ SIMPLETEST_BASE_URL: (options.via === 'nginx') ? 'https://appserver_nginx' : 'https://appserver',
276
+ SIMPLETEST_DB: `mysql://${options.recipe}:${options.recipe}@database/${options.recipe}`,
277
+ },
278
+ },
271
279
  },
272
- }}});
280
+ });
273
281
 
274
282
  // Switch the proxy service if needed
275
283
  if (!_.has(options, 'proxyService')) {
@@ -283,6 +291,23 @@ module.exports = {
283
291
  options.services = _.merge({}, getServices(options), options.services);
284
292
  options.tooling = _.merge({}, getTooling(options), options.tooling);
285
293
 
294
+ // Set DRUSH_OPTIONS_URI based on drush_uri config or proxy settings
295
+ let drushUri = options.drush_uri;
296
+ if (!drushUri) {
297
+ const proxyUrl = options.proxy[options.proxyService]?.[0];
298
+ if (proxyUrl) {
299
+ // Check SSL setting for the proxy service
300
+ const proxyServiceSsl = options.services[options.proxyService]?.ssl;
301
+ const ssl = proxyServiceSsl !== undefined ? proxyServiceSsl : options.services.appserver?.ssl;
302
+ drushUri = ssl ? `https://${proxyUrl}` : `http://${proxyUrl}`;
303
+ }
304
+ }
305
+
306
+ if (drushUri) {
307
+ options.services.appserver.environment = options.services.appserver.environment || {};
308
+ options.services.appserver.environment.DRUSH_OPTIONS_URI = drushUri;
309
+ }
310
+
286
311
  // Send downstream
287
312
  super(id, _.merge({}, config, options));
288
313
  }
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const _ = require('lodash');
4
- const LandoMariadb = require('./../node_modules/@lando/mariadb/builders/mariadb.js');
4
+ const LandoMariadb = require('@lando/mariadb/builders/mariadb.js');
5
5
 
6
6
  // Builder
7
7
  module.exports = {
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const _ = require('lodash');
4
- const LandoMssql = require('./../node_modules/@lando/mssql/builders/mssql.js');
4
+ const LandoMssql = require('@lando/mssql/builders/mssql.js');
5
5
 
6
6
  // Builder
7
7
  module.exports = {
@@ -1,7 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  const _ = require('lodash');
4
- const LandoMysql = require('./../node_modules/@lando/mysql/builders/mysql.js');
4
+ const semver = require('semver');
5
+ const LandoMysql = require('@lando/mysql/builders/mysql.js');
5
6
 
6
7
  // Builder
7
8
  module.exports = {
@@ -9,6 +10,11 @@ module.exports = {
9
10
  parent: '_service',
10
11
  builder: parent => class DrupalMysql extends LandoMysql.builder(parent, LandoMysql.config) {
11
12
  constructor(id, options = {}) {
13
+ // Versions of MySQL prior to 8.4 use mysql_native_password authentication
14
+ if (!options.authentication && semver.lt(semver.coerce(options.version), '8.4.0')) {
15
+ options.authentication = 'mysql_native_password';
16
+ }
17
+
12
18
  super(id, options, {services: _.set({}, options.name)});
13
19
  }
14
20
  },
@@ -8,7 +8,7 @@ module.exports = {
8
8
  name: 'drupal-nginx',
9
9
  parent: '_webserver',
10
10
  config: {
11
- version: '1.25',
11
+ version: '1.29',
12
12
  },
13
13
  builder: (parent, config) => class DrupalNginx extends PhpNginx.builder(parent, PhpNginx.config) {
14
14
  constructor(id, options = {}) {
@@ -1,8 +1,6 @@
1
1
  'use strict';
2
2
 
3
- const path = require('path');
4
- const landoPhpPath = path.join(__dirname, '../node_modules/@lando/php');
5
- const LandoPhp = require(`${landoPhpPath}/builders/php.js`);
3
+ const LandoPhp = require('@lando/php/builders/php.js');
6
4
 
7
5
  /**
8
6
  * Drupal PHP builder class that extends Lando PHP builder.
@@ -1,7 +1,7 @@
1
1
  'use strict';
2
2
 
3
3
  const _ = require('lodash');
4
- const LandoPostgres = require('./../node_modules/@lando/postgres/builders/postgres.js');
4
+ const LandoPostgres = require('@lando/postgres/builders/postgres.js');
5
5
 
6
6
  // Builder
7
7
  module.exports = {
@@ -3,104 +3,56 @@
3
3
  #
4
4
  # LANDODRUPALMYSQL8CNF
5
5
 
6
- [mysqld]
7
- #
8
- # * Basic Settings
9
- #
10
- # Data is stored in a volume on the db container /sql
11
- default-storage-engine = innodb
6
+ [server]
7
+ # Character sets and SQL mode
8
+ character_set_server = utf8mb4
9
+ collation_server = utf8mb4_general_ci
10
+ sql_mode = ONLY_FULL_GROUP_BY,TRADITIONAL
12
11
 
13
- #
14
- # * Fine Tuning
15
- #
16
- key_buffer_size = 384M
17
- max_allowed_packet = 32M
18
- thread_stack = 400K
19
- thread_cache_size = 8
20
- # This replaces the startup script and checks MyISAM tables if needed
21
- # the first time they are touched
22
- #max_connections = 100
23
- #table_cache = 64
24
- #thread_concurrency = 10
25
- read_rnd_buffer_size = 8M
26
- myisam_sort_buffer_size = 64M
27
- table_open_cache = 512
28
- sort_buffer_size = 2M
12
+ # Basic Tuning.
13
+ max_connections = 500
14
+ connect_timeout = 5
15
+ wait_timeout = 28800
16
+ max_allowed_packet = 32M
17
+ thread_cache_size = 128
18
+ sort_buffer_size = 4M
19
+ bulk_insert_buffer_size = 16M
20
+ tmp_table_size = 32M
21
+ max_heap_table_size = 32M
22
+
23
+ # MyISAM.
24
+ myisam_recover_options = BACKUP
25
+ key_buffer_size = 128M
26
+ table_open_cache = 400
27
+ myisam_sort_buffer_size = 512M
28
+ concurrent_insert = 2
29
29
  read_buffer_size = 2M
30
+ read_rnd_buffer_size = 1M
30
31
 
31
- #
32
- # * Logging and Replication
33
- #
34
- # Both location gets rotated by the cronjob.
35
- # Be aware that this log type is a performance killer.
36
- # As of 5.1 you can enable the log at runtime!
37
- #general_log_file = /src/.lando/log/mysql.log
38
- #general_log = 1
39
- #
40
- # Error logging goes to syslog due to /etc/mysql/conf.d/mysqld_safe_syslog.cnf.
41
- #
42
- # Here you can see queries with especially long duration
43
- #log_slow_queries = /var/log/mysql/mysql-slow.log
44
- #long_query_time = 2
45
- #log-queries-not-using-indexes
46
- #
47
- # The following can be used as easy to replay backup logs or for replication.
48
- # note: if you are setting up a replication slave, see README.Debian about
49
- # other settings you may need to change.
50
- #server-id = 1
51
- #log_bin = /src/.lando/log/mysql-bin.log
52
- expire_logs_days = 10
53
- max_binlog_size = 101M
54
- #binlog_do_db = include_database_name
55
- #binlog_ignore_db = include_database_name
56
- #
57
- # * InnoDB
58
- #
59
- # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
60
- # Read the manual for more InnoDB related options. There are many!
61
- #
62
- # Uncomment the following if you are using InnoDB tables
63
- #innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend
64
- #innodb_log_group_home_dir = C:\mysql\data/
65
- # You can set .._buffer_pool_size up to 50 - 80 %
66
- # of RAM but beware of setting memory usage too high
67
- #innodb_buffer_pool_size = 384M
68
- #innodb_additional_mem_pool_size = 20M
69
- # Set .._log_file_size to 25 % of buffer pool size
70
- innodb_log_file_size = 100M
71
- #innodb_log_buffer_size = 8M
72
- innodb_flush_log_at_trx_commit = 0
73
- #innodb_lock_wait_timeout = 50
32
+ # InnoDB.
33
+ default_storage_engine = InnoDB
74
34
  innodb_buffer_pool_size = 384M
75
- innodb_log_buffer_size = 4M
76
- innodb_file_per_table = 1
77
- innodb_open_files = 256
78
- innodb_io_capacity = 512
79
- innodb_flush_method = O_DIRECT
80
- innodb_thread_concurrency = 8
35
+ innodb_log_buffer_size = 8M
36
+ innodb_file_per_table = 1
37
+ innodb_open_files = 400
38
+ innodb_io_capacity = 512
39
+ innodb_thread_concurrency = 0
40
+ innodb_read_io_threads = 16
41
+ innodb_write_io_threads = 16
42
+ innodb_flush_log_at_trx_commit = 0
43
+ innodb_max_dirty_pages_pct = 70
44
+ innodb_adaptive_hash_index = 0
45
+ innodb_use_native_aio = 0
81
46
  innodb_lock_wait_timeout = 127
82
- #
83
- # * Security Features
84
- #
85
- # Read the manual, too, if you want chroot!
86
- # chroot = /var/lib/mysql/
87
- #
88
- # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
89
- #
90
- # ssl-ca=/etc/mysql/cacert.pem
91
- # ssl-cert=/etc/mysql/server-cert.pem
92
- # ssl-key=/etc/mysql/server-key.pem
47
+
48
+ [mysqld-8.4]
49
+ mysql_native_password=ON
50
+
51
+ [client]
52
+ default_character_set=utf8mb4
53
+ max_allowed_packet = 64M
93
54
 
94
55
  [mysqldump]
95
56
  quick
96
57
  quote-names
97
- max_allowed_packet = 32M
98
-
99
- [mysql]
100
- #no-auto-rehash # faster start of mysql but no tab completion
101
-
102
- [isamchk]
103
- key_buffer_size = 384M
104
- sort_buffer_size = 256M
105
- read_buffer = 2M
106
- write_buffer = 2M
58
+ no-tablespaces
package/inits/drupal10.js CHANGED
@@ -5,4 +5,9 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal10',
8
+ defaults: {
9
+ 'php': '8.1',
10
+ 'drush': '^11',
11
+ 'composer_version': '2-latest',
12
+ },
8
13
  };
package/inits/drupal11.js CHANGED
@@ -5,4 +5,11 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal11',
8
+ defaults: {
9
+ 'php': '8.3',
10
+ 'via': 'apache:2.4',
11
+ 'database': 'mysql:8.0',
12
+ 'composer_version': '2-latest',
13
+ 'drush': '^13',
14
+ },
8
15
  };
package/inits/drupal6.js CHANGED
@@ -5,4 +5,8 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal6',
8
+ defaults: {
9
+ 'php': '5.6',
10
+ 'drush': '8.4.5',
11
+ },
8
12
  };
package/inits/drupal7.js CHANGED
@@ -5,4 +5,7 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal7',
8
+ defaults: {
9
+ 'php': '7.4',
10
+ },
8
11
  };
package/inits/drupal8.js CHANGED
@@ -5,4 +5,7 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal8',
8
+ defaults: {
9
+ 'php': '7.3',
10
+ },
8
11
  };
package/inits/drupal9.js CHANGED
@@ -5,4 +5,9 @@
5
5
  */
6
6
  module.exports = {
7
7
  name: 'drupal9',
8
+ defaults: {
9
+ 'php': '8.0',
10
+ 'drush': '^11',
11
+ 'composer_version': '2-latest',
12
+ },
8
13
  };
package/netlify.toml CHANGED
@@ -15,7 +15,7 @@
15
15
  "CHANGELOG.html",
16
16
  "x.com",
17
17
  "twitter.com",
18
- "https://www.drupal.org",
18
+ "drupal.org",
19
19
  "/v/"
20
20
  ]
21
21
  skipPatterns = [ ".rss", ".gif", ".jpg" ]
@@ -5,7 +5,7 @@ proxy:
5
5
  services:
6
6
  cli:
7
7
  api: 4
8
- image: node:18
8
+ image: node:20
9
9
  command: sleep infinity
10
10
  ports:
11
11
  - 5173:5173/http
@@ -1 +1 @@
1
- 18
1
+ 20
@@ -1,7 +1,18 @@
1
1
  ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
2
2
 
3
+ ## v1.8.0 - [September 8, 2025](https://github.com/lando/mariadb/releases/tag/v1.8.0)
4
+
5
+ * Added support for MariaDB 11.8
6
+
7
+ ## v1.7.0 - [August 30, 2025](https://github.com/lando/mariadb/releases/tag/v1.7.0)
8
+
9
+ * Switched images to [bitnamilegacy](https://github.com/bitnami/containers/issues/83267) namespace
10
+ * Updated `mariadb:11.4` to `11.4.7`
11
+
3
12
  ## v1.6.3 - [December 6, 2024](https://github.com/lando/mariadb/releases/tag/v1.6.3)
4
13
 
14
+ * Added support for MariaDB 11.6 and 11.7.
15
+ * Bumped all available MariaDB minor versions.
5
16
  * Updated the version index.md to get Docuverse page to build correctly.
6
17
 
7
18
  ## v1.6.2 - [December 4, 2024](https://github.com/lando/mariadb/releases/tag/v1.6.2)
@@ -19,7 +30,7 @@
19
30
  ## v1.5.0 - [September 26, 2024](https://github.com/lando/mariadb/releases/tag/v1.5.0)
20
31
 
21
32
  * Added MariaDB 11.5.
22
- * Updated pinned image versions to be ARM compatible.
33
+ * Updated pinned image versions to be ARM compatible.
23
34
 
24
35
  ## v1.4.0 - [September 24, 2024](https://github.com/lando/mariadb/releases/tag/v1.4.0)
25
36
 
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Lando Alliance
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.