@lando/drupal 1.11.0 → 1.12.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 (40) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/builders/_drupaly.js +1 -1
  3. package/builders/drupal-php.js +17 -16
  4. package/builders/drupal10.js +1 -1
  5. package/builders/drupal6.js +3 -2
  6. package/builders/drupal9.js +1 -1
  7. package/netlify.toml +17 -1
  8. package/node_modules/@lando/mysql/CHANGELOG.md +5 -0
  9. package/node_modules/@lando/mysql/builders/mysql.js +3 -3
  10. package/node_modules/@lando/mysql/package.json +5 -5
  11. package/node_modules/@lando/php/CHANGELOG.md +29 -1
  12. package/node_modules/@lando/php/builders/php.js +75 -15
  13. package/node_modules/@lando/php/images/5.6-apache/Dockerfile +0 -4
  14. package/node_modules/@lando/php/images/5.6-fpm/Dockerfile +0 -5
  15. package/node_modules/@lando/php/images/7.0-apache/Dockerfile +0 -4
  16. package/node_modules/@lando/php/images/7.0-fpm/Dockerfile +0 -4
  17. package/node_modules/@lando/php/images/7.1-apache/Dockerfile +0 -4
  18. package/node_modules/@lando/php/images/7.1-fpm/Dockerfile +0 -4
  19. package/node_modules/@lando/php/images/7.2-apache/Dockerfile +0 -4
  20. package/node_modules/@lando/php/images/7.2-fpm/Dockerfile +0 -4
  21. package/node_modules/@lando/php/images/7.3-apache/Dockerfile +0 -3
  22. package/node_modules/@lando/php/images/7.3-fpm/Dockerfile +0 -3
  23. package/node_modules/@lando/php/images/7.4-apache/Dockerfile +45 -55
  24. package/node_modules/@lando/php/images/7.4-fpm/Dockerfile +59 -69
  25. package/node_modules/@lando/php/images/8.0-apache/Dockerfile +45 -56
  26. package/node_modules/@lando/php/images/8.0-fpm/Dockerfile +45 -56
  27. package/node_modules/@lando/php/images/8.1-apache/Dockerfile +12 -2
  28. package/node_modules/@lando/php/images/8.1-fpm/Dockerfile +12 -2
  29. package/node_modules/@lando/php/images/8.2-apache/Dockerfile +12 -2
  30. package/node_modules/@lando/php/images/8.2-fpm/Dockerfile +12 -2
  31. package/node_modules/@lando/php/images/8.3-apache/Dockerfile +24 -4
  32. package/node_modules/@lando/php/images/8.3-fpm/Dockerfile +25 -4
  33. package/node_modules/@lando/php/images/8.4-apache/Dockerfile +27 -4
  34. package/node_modules/@lando/php/images/8.4-fpm/Dockerfile +27 -4
  35. package/node_modules/@lando/php/netlify.toml +1 -1
  36. package/node_modules/@lando/php/package.json +5 -5
  37. package/node_modules/@lando/php/scripts/install-composer.sh +4 -0
  38. package/node_modules/@lando/php/utils/add-build-step.js +17 -3
  39. package/node_modules/@lando/php/utils/get-install-commands.js +19 -3
  40. package/package.json +7 -7
package/CHANGELOG.md CHANGED
@@ -1,5 +1,12 @@
1
1
  ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
2
2
 
3
+ ## v1.12.0 - [January 16, 2025](https://github.com/lando/drupal/releases/tag/v1.12.0)
4
+
5
+ * Updated globally installed Drush to `v8.5.0`.
6
+ * Added docs for setting up [Drupal CMS](https://drupal.org/docs/drupal-cms).
7
+ * Updated to [@lando/php@1.7.1](https://github.com/lando/php/releases/tag/v1.7.1).
8
+ * Updated to [@lando/mysql@1.5.0](https://github.com/lando/mysql/releases/tag/v1.5.0).
9
+
3
10
  ## v1.11.0 - [December 9, 2024](https://github.com/lando/drupal/releases/tag/v1.11.0)
4
11
 
5
12
  * Optimized for `midcore`
@@ -9,7 +9,7 @@ const utils = require('../lib/utils.js');
9
9
  const warnings = require('../lib/warnings.js');
10
10
 
11
11
  // "Constants"
12
- const DRUSH8 = '8.4.8';
12
+ const DRUSH8 = '8.5.0';
13
13
  const DRUSH7 = '7.4.0';
14
14
 
15
15
  // Tooling defaults
@@ -1,30 +1,31 @@
1
1
  'use strict';
2
2
 
3
- const _ = require('lodash');
4
- const fs = require('fs');
5
3
  const path = require('path');
6
4
  const landoPhpPath = path.join(__dirname, '../node_modules/@lando/php');
7
5
  const LandoPhp = require(`${landoPhpPath}/builders/php.js`);
8
6
 
9
- const loadScripts = options => {
10
- const lando = _.get(options, '_app._lando');
11
- // Move the script to the confDir and make executable.
12
- if (fs.existsSync(path.join(landoPhpPath, 'scripts'))) {
13
- const confDir = path.join(lando.config.userConfRoot, 'scripts');
14
- const dest = lando.utils.moveConfig(path.join(landoPhpPath, 'scripts'), confDir);
15
- lando.utils.makeExecutable(fs.readdirSync(dest), dest);
16
- lando.log.debug('automoved scripts from %s to %s and set to mode 755',
17
- path.join(landoPhpPath, 'scripts'), confDir);
18
- }
19
- };
20
-
21
- // Builder
7
+ /**
8
+ * Drupal PHP builder class that extends Lando PHP builder.
9
+ * Uses the bundled version of @lando/php plugin instead of user's version.
10
+ *
11
+ * @module drupal-php
12
+ */
22
13
  module.exports = {
23
14
  name: 'drupal-php',
24
15
  parent: '_appserver',
16
+ /**
17
+ * Builder function that returns the DrupalPhp class
18
+ * @param {Object} parent - Parent builder class
19
+ * @return {Class} DrupalPhp class extending LandoPhp builder
20
+ */
25
21
  builder: parent => class DrupalPhp extends LandoPhp.builder(parent, LandoPhp.config) {
22
+ /**
23
+ * Create a new DrupalPhp instance
24
+ * @param {string} id - Service id
25
+ * @param {Object} options - Service options
26
+ * @param {Object} factory - App factory instance
27
+ */
26
28
  constructor(id, options = {}, factory) {
27
- loadScripts(options);
28
29
  options.nginxServiceType = 'drupal-nginx';
29
30
  super(id, options, factory);
30
31
  }
@@ -27,7 +27,7 @@ module.exports = {
27
27
  // Set drush to false
28
28
  options.drush = false;
29
29
 
30
- // Let's make sure we set appropripate default versions for things
30
+ // Let's make sure we set appropriate default versions for things
31
31
  // See: https://www.drupal.org/docs/system-requirements/database-server-requirements
32
32
  if (_.get(options, 'database') === 'mysql') {
33
33
  options.database = 'mysql:5.7';
@@ -14,8 +14,9 @@ module.exports = {
14
14
  confSrc: path.resolve(__dirname, '..', 'config', 'drupal6'),
15
15
  defaultFiles: {},
16
16
  php: '5.6',
17
- // @NOTE: below seems to be the last known drush version that let you do
18
- // drush si -y succesfully
17
+ // @NOTE: below seems to be the last known Drupal 6 compatible
18
+ // drush version that let you do drush si -y successfully.
19
+ // @see https://github.com/drush-ops/drush/issues/218#issuecomment-2580619527
19
20
  drush: '8.4.5',
20
21
  },
21
22
  builder: (parent, config) => class LandoDrupal6 extends parent {
@@ -27,7 +27,7 @@ module.exports = {
27
27
  // Set drush to false
28
28
  options.drush = false;
29
29
 
30
- // Let's make sure we set appropripate default versions for things
30
+ // Let's make sure we set appropriate default versions for things
31
31
  // See: https://www.drupal.org/docs/9/how-drupal-9-is-made-and-what-is-included/environment-requirements-of-drupal-9
32
32
  if (_.get(options, 'database') === 'mysql') {
33
33
  options.database = 'mysql:5.7';
package/netlify.toml CHANGED
@@ -10,7 +10,14 @@
10
10
  [[context.deploy-preview.plugins]]
11
11
  package = "netlify-plugin-checklinks"
12
12
  [context.deploy-preview.plugins.inputs]
13
- todoPatterns = [ "load", "CHANGELOG.html", "x.com", "twitter.com", "/v/" ]
13
+ todoPatterns = [
14
+ "load",
15
+ "CHANGELOG.html",
16
+ "x.com",
17
+ "twitter.com",
18
+ "https://www.drupal.org",
19
+ "/v/"
20
+ ]
14
21
  skipPatterns = [ ".rss", ".gif", ".jpg" ]
15
22
  checkExternal = true
16
23
 
@@ -40,6 +47,15 @@
40
47
  output_path = "reports/lighthouse.html"
41
48
 
42
49
  # We need this so preview environments and the base site look ok on their own
50
+ [[redirects]]
51
+ from = "https://lando-drupal.netlify.app"
52
+ to = "https://lando-drupal.netlify.app/plugins/drupal/index.html"
53
+ status = 301
54
+ force = true
55
+ [[redirects]]
56
+ from = "https://lando-drupal.netlify.app/*"
57
+ to = "https://docs.lando.dev/:splat"
58
+ status = 301
43
59
  [[redirects]]
44
60
  from = "/"
45
61
  to = "/plugins/drupal"
@@ -1,5 +1,10 @@
1
1
  ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
2
2
 
3
+ ## v1.5.0 - [January 6, 2025](https://github.com/lando/mysql/releases/tag/v1.5.0)
4
+
5
+ * Added support for MySQL 8.4
6
+ * Updated 8.0 to patch 40
7
+
3
8
  ## v1.4.4 - [December 7, 2024](https://github.com/lando/mysql/releases/tag/v1.4.4)
4
9
 
5
10
  * Optimized for `midcore`
@@ -9,13 +9,13 @@ module.exports = {
9
9
  name: 'mysql',
10
10
  config: {
11
11
  version: '5.7',
12
- supported: ['8.0', '5.7'],
12
+ supported: ['8.4', '8.0', '5.7'],
13
13
  pinPairs: {
14
- '8.0': 'bitnami/mysql:8.0.39-debian-12-r5',
14
+ '8.4': 'bitnami/mysql:8.4.3-debian-12-r4',
15
+ '8.0': 'bitnami/mysql:8.0.40-debian-12-r4',
15
16
  '5.7': 'bitnami/mysql:5.7.43-debian-11-r73',
16
17
  },
17
18
  patchesSupported: true,
18
- authentication: 'caching_sha2_password',
19
19
  confSrc: path.resolve(__dirname, '..', 'config'),
20
20
  creds: {
21
21
  database: 'database',
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lando/mysql",
3
3
  "description": "A Lando plugin that provides a tight integration with MySQL.",
4
- "version": "1.4.4",
4
+ "version": "1.5.0",
5
5
  "author": "Mike Pirog @pirog",
6
6
  "license": "GPL-3.0",
7
7
  "repository": "lando/mysql",
@@ -62,9 +62,9 @@
62
62
  "lodash"
63
63
  ],
64
64
  "dist": {
65
- "integrity": "sha512-b2k9E1ArWb3VNdPxxfEiEB05XCO7HtoTkf0O44E7SlPeYUfTTsBP6bPk60SJ6SJFA3V5KHl9TAPfXIhVemONtg==",
66
- "shasum": "2db77cc0602dc1a32f67205a058837954250ec60",
67
- "filename": "lando-mysql-1.4.4.tgz",
68
- "unpackedSize": 1471119
65
+ "integrity": "sha512-6Vo5ldpXsUNlwXbDBLTiZKcx0H58FBJQ4Cv3+oI54MnAuUwWc0DpmHfa5eKR39wNuqxXrMXulS7igDE62FRhvQ==",
66
+ "shasum": "2eb72be5a0a4beeeebb6384d7913def1ddded538",
67
+ "filename": "lando-mysql-1.5.0.tgz",
68
+ "unpackedSize": 1471270
69
69
  }
70
70
  }
@@ -1,13 +1,41 @@
1
1
  ## {{ UNRELEASED_VERSION }} - [{{ UNRELEASED_DATE }}]({{ UNRELEASED_LINK }})
2
2
 
3
+ ## v1.7.1 - [January 15, 2025](https://github.com/lando/php/releases/tag/v1.7.1)
4
+
5
+ * Improved the `php` service builder to mount a unique scripts directory per service to prevent version conflicts.
6
+
7
+ ## v1.7.0 - [January 8, 2025](https://github.com/lando/php/releases/tag/v1.7.0)
8
+
9
+ * Added logic to allow default `composer` version to be set based on PHP version.
10
+ * Added `2.2` and `2.2-latest` shorthand options to install the latest stable 2.2 LTS version of `composer`.
11
+ * Set default `composer` version to `2-latest`
12
+ * Set default `composer` version to `2.2-latest` for PHP 5.3-7.2
13
+ * Set default `composer` version to `1-latest` for PHP <= 5.2
14
+ * Removed `composer` installation from images to prefer installing during app build
15
+ * Fixed bug causing `composer` 2.2.x to be installed when `composer_version` was set to a single digit version such as `1`
16
+ * Fixed mismatched `libsqlite3-dev` and `libsqlite3-0` versions in PHP 8.3 and 8.4 images
17
+ * Fixed regression causing ImageMagick `convert` to not be available in images with `imagick` extension enabled
18
+
19
+ ## v1.6.4 - [December 14, 2024](https://github.com/lando/php/releases/tag/v1.6.4)
20
+
21
+ * Fixed issue causing `xdebug` extension to not be disabled by default in PHP 8.3 and 8.4 images.
22
+ * Added `install-php-extensions` script to PHP 7.4-8.2 images.
23
+ * Added MariaDB client tools to PHP 7.4-8.4 images [#120](https://github.com/lando/php/issues/120).
24
+ * Added `xhprof` extension to PHP 7.4-8.4 images.
25
+ * Updated `sqlite3` to 3.45.1 in PHP 8.3-8.4 images.
26
+
3
27
  ## v1.6.3 - [December 7, 2024](https://github.com/lando/php/releases/tag/v1.6.3)
4
28
 
5
29
  * Optimized for `midcore`
6
30
 
7
31
  ## v1.6.2 - [December 6, 2024](https://github.com/lando/php/releases/tag/v1.6.2)
8
32
 
33
+ * Updated PHP 8.1-8.3 base images to Debian 12 (bookworm).
34
+ * Added `install-php-extensions` script to PHP 8.3 and 8.4 images.
35
+ * Added `imagick` extension to PHP 8.3 and 8.4 images.
36
+ * Updated 8.4RC image to 8.4 stable.
37
+ * Added `xdebug` extension to PHP 8.4 images.
9
38
  * Updated the version index.md to get Docuverse page to build correctly.
10
-
11
39
  * Updated to [@lando/vitepress-theme-default-plus@v1.1.0-beta.24](https://github.com/lando/vitepress-theme-default-plus/releases/tag/v1.1.0-beta.24).
12
40
  * Updated GitHub Actions to build images only on changes to images or workflows.
13
41
 
@@ -5,6 +5,29 @@ const _ = require('lodash');
5
5
  const path = require('path');
6
6
  const semver = require('semver');
7
7
  const addBuildStep = require('./../utils/add-build-step');
8
+
9
+ /**
10
+ * Get the appropriate Composer version based on the PHP version.
11
+ * @param {semver} phpSemver - The PHP semantic version.
12
+ * @return {string|boolean} - The Composer version or false if we cannot parse the version.
13
+ */
14
+ const getDefaultComposerVersion = phpSemver => {
15
+ // Don't set a default composer version if we cannot
16
+ // parse the version such as with `custom`.
17
+ if (!phpSemver) return false;
18
+
19
+ if (semver.lt(phpSemver, '5.3.2')) {
20
+ // Use Composer 1 for PHP < 5.3.2
21
+ return '1';
22
+ } else if (semver.lt(phpSemver, '7.3.0')) {
23
+ // Use Composer 2.2 LTS for PHP < 7.3
24
+ return '2.2';
25
+ } else {
26
+ // Use Composer 2 for PHP >= 7.3
27
+ return '2';
28
+ }
29
+ };
30
+
8
31
  /*
9
32
  * Helper to get nginx config
10
33
  */
@@ -30,13 +53,25 @@ const nginxConfig = options => ({
30
53
  const xdebugConfig = host => ([
31
54
  `client_host=${host}`,
32
55
  'discover_client_host=1',
33
- 'log=/tmp/xdebug.log',
34
- 'remote_enable=true',
56
+ 'log=/tmp/xdebug.log',
57
+ 'remote_enable=true',
35
58
  `remote_host=${host}`,
36
59
  ].join(' '));
37
60
 
38
- /*
39
- * Helper to build a package string
61
+ /**
62
+ * Helper function to build a package string by combining package name and version
63
+ *
64
+ * @param {string} pkg - The package name
65
+ * @param {string} version - The package version
66
+ * @return {string} The formatted package string, either "pkg:version" or just "pkg" if version is empty
67
+ *
68
+ * @example
69
+ * // Returns "php:7.4"
70
+ * pkger('php', '7.4');
71
+ *
72
+ * @example
73
+ * // Returns "mysql"
74
+ * pkger('mysql', '');
40
75
  */
41
76
  const pkger = (pkg, version) => (!_.isEmpty(version)) ? `${pkg}:${version}` : pkg;
42
77
 
@@ -108,7 +143,7 @@ module.exports = {
108
143
  ],
109
144
  confSrc: path.resolve(__dirname, '..', 'config'),
110
145
  command: ['sh -c \'a2enmod rewrite && apache2-foreground\''],
111
- composer_version: '2.2.22',
146
+ composer_version: true,
112
147
  phpServer: 'apache',
113
148
  defaultFiles: {
114
149
  _php: 'php.ini',
@@ -126,6 +161,7 @@ module.exports = {
126
161
  php: '/usr/local/etc/php/conf.d/zzz-lando-my-custom.ini',
127
162
  pool: '/usr/local/etc/php-fpm.d/zz-lando.conf',
128
163
  },
164
+ scriptsDir: path.resolve(__dirname, '..', 'scripts'),
129
165
  sources: [],
130
166
  suffix: '5',
131
167
  ssl: false,
@@ -137,12 +173,20 @@ module.exports = {
137
173
  parent: '_appserver',
138
174
  builder: (parent, config) => class LandoPhp extends parent {
139
175
  constructor(id, options = {}, factory) {
176
+ const debug = _.get(options, '_app._lando').log.debug;
177
+
178
+ // Merge the user config onto the default options
140
179
  options = parseConfig(_.merge({}, config, options));
180
+
181
+ // Get the semver of the PHP version, NULL if we cannot parse it
182
+ const phpSemver = semver.coerce(options.version);
183
+ phpSemver && debug('Parsed PHP semantic version: %s', phpSemver);
184
+
141
185
  // Mount our default php config
142
186
  options.volumes.push(`${options.confDest}/${options.defaultFiles._php}:${options.remoteFiles._php}`);
143
187
  options.volumes.push(`${options.confDest}/${options.defaultFiles.pool}:${options.remoteFiles.pool}`);
144
188
  // Shift on the docker entrypoint if this is a more recent version
145
- if (options.version !== 'custom' && semver.gt(semver.coerce(options.version), '5.5.0')) {
189
+ if (phpSemver && semver.gt(phpSemver, '5.5.0')) {
146
190
  options.command.unshift('docker-php-entrypoint');
147
191
  }
148
192
 
@@ -168,22 +212,38 @@ module.exports = {
168
212
  };
169
213
  options.info = {via: options.via};
170
214
 
171
- // Add our composer things to run step
172
- if (!_.isEmpty(options.composer)) {
173
- const commands =
174
- require('../utils/get-install-commands')(options.composer, pkger, ['composer', 'global', 'require', '-n']);
175
- addBuildStep(commands, options._app, options.name, 'build_internal');
215
+ // Determine the appropriate composer version to install if not specified
216
+ if (options.composer_version === true || options.composer_version === '') {
217
+ options.composer_version = getDefaultComposerVersion(phpSemver);
218
+ } else if (typeof options.composer_version === 'number') {
219
+ options.composer_version = options.composer_version.toString();
176
220
  }
221
+ const usingComposer1 = options.composer_version && semver.satisfies(options.composer_version, '1.x');
177
222
 
178
- // Add activate steps for xdebug
223
+ // Add prestissimo as a global package for Composer 1.x performance improvements. Requires PHP >= 5.3
224
+ if (usingComposer1 && phpSemver && semver.gte(phpSemver, '5.3.0')) {
225
+ options.composer = options.composer || {};
226
+ options.composer = {'hirak/prestissimo': '*', ...options.composer};
227
+ }
228
+
229
+ // Add build step to enable xdebug
179
230
  if (options.xdebug) {
180
231
  addBuildStep(['docker-php-ext-enable xdebug'], options._app, options.name, 'build_as_root_internal');
181
232
  }
182
233
 
183
- // Install the desired composer version
234
+ // Add build step to install our Composer global packages
235
+ if (!_.isEmpty(options.composer)) {
236
+ const commands =
237
+ require('../utils/get-install-commands')(options.composer, pkger, ['composer', 'global', 'require', '-n']);
238
+ addBuildStep(commands, options._app, options.name, 'build_internal');
239
+ }
240
+
241
+ // Install the desired composer version as the first `build_internal` build step
184
242
  if (options.composer_version) {
185
- const commands = [`/helpers/install-composer.sh ${options.composer_version}`];
186
- addBuildStep(commands, options._app, options.name, 'build_internal', true);
243
+ debug('Installing composer version %s', options.composer_version);
244
+ const commands = [`/etc/lando/service/helpers/install-composer.sh ${options.composer_version}`];
245
+ const firstStep = true;
246
+ addBuildStep(commands, options._app, options.name, 'build_internal', firstStep);
187
247
  }
188
248
 
189
249
  // Add in nginx if we need to
@@ -72,11 +72,7 @@ RUN \
72
72
  intl \
73
73
  gettext \
74
74
  pcntl \
75
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
76
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
77
- && php -r "unlink('composer-setup.php');" \
78
75
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
79
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
80
76
  && apt-get -y clean \
81
77
  && apt-get -y autoclean \
82
78
  && apt-get -y autoremove \
@@ -72,12 +72,7 @@ RUN \
72
72
  intl \
73
73
  gettext \
74
74
  pcntl \
75
- # Install composer
76
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
77
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
78
- && php -r "unlink('composer-setup.php');" \
79
75
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
80
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
81
76
  && apt-get -y clean \
82
77
  && apt-get -y autoclean \
83
78
  && apt-get -y autoremove \
@@ -72,11 +72,7 @@ RUN \
72
72
  intl \
73
73
  gettext \
74
74
  pcntl \
75
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
76
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
77
- && php -r "unlink('composer-setup.php');" \
78
75
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
79
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
80
76
  && apt-get -y clean \
81
77
  && apt-get -y autoclean \
82
78
  && apt-get -y autoremove \
@@ -72,11 +72,7 @@ RUN \
72
72
  intl \
73
73
  gettext \
74
74
  pcntl \
75
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
76
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
77
- && php -r "unlink('composer-setup.php');" \
78
75
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
79
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
80
76
  && apt-get -y clean \
81
77
  && apt-get -y autoclean \
82
78
  && apt-get -y autoremove \
@@ -75,11 +75,7 @@ RUN \
75
75
  intl \
76
76
  gettext \
77
77
  pcntl \
78
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
79
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
80
- && php -r "unlink('composer-setup.php');" \
81
78
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
82
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
83
79
  && apt-get -y clean \
84
80
  && apt-get -y autoclean \
85
81
  && apt-get -y autoremove \
@@ -75,11 +75,7 @@ RUN \
75
75
  intl \
76
76
  gettext \
77
77
  pcntl \
78
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
79
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
80
- && php -r "unlink('composer-setup.php');" \
81
78
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
82
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
83
79
  && apt-get -y clean \
84
80
  && apt-get -y autoclean \
85
81
  && apt-get -y autoremove \
@@ -73,11 +73,7 @@ RUN \
73
73
  intl \
74
74
  gettext \
75
75
  pcntl \
76
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
77
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
78
- && php -r "unlink('composer-setup.php');" \
79
76
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
80
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
81
77
  && apt-get -y clean \
82
78
  && apt-get -y autoclean \
83
79
  && apt-get -y autoremove \
@@ -73,11 +73,7 @@ RUN \
73
73
  intl \
74
74
  gettext \
75
75
  pcntl \
76
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
77
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=1.10.1 \
78
- && php -r "unlink('composer-setup.php');" \
79
76
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
80
- && su -c "composer global require -n hirak/prestissimo" -s /bin/sh www-data \
81
77
  && apt-get -y clean \
82
78
  && apt-get -y autoclean \
83
79
  && apt-get -y autoremove \
@@ -69,9 +69,6 @@ RUN mkdir -p /usr/share/man/man1 /usr/share/man/man7 \
69
69
  intl \
70
70
  gettext \
71
71
  pcntl \
72
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
73
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.2.12 \
74
- && php -r "unlink('composer-setup.php');" \
75
72
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
76
73
  && apt-get -y clean \
77
74
  && apt-get -y autoclean \
@@ -69,9 +69,6 @@ RUN mkdir -p /usr/share/man/man1 /usr/share/man/man7 \
69
69
  intl \
70
70
  gettext \
71
71
  pcntl \
72
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
73
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.2.12 \
74
- && php -r "unlink('composer-setup.php');" \
75
72
  && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
76
73
  && apt-get -y clean \
77
74
  && apt-get -y autoclean \
@@ -2,30 +2,23 @@
2
2
 
3
3
  FROM php:7.4-apache-bullseye
4
4
 
5
- # Install dependencies we need
5
+ ADD --chmod=0755 https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
6
+
7
+ RUN \
8
+ # MariaDB client compatibility (https://github.com/lando/php/issues/120)
9
+ mkdir -p /etc/apt/keyrings \
10
+ && curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp' \
11
+ && echo "deb [signed-by=/etc/apt/keyrings/mariadb-keyring.pgp] https://mirror.mariadb.org/repo/10.5/debian bullseye main" > /etc/apt/sources.list.d/mariadb.list
12
+
6
13
  RUN mkdir -p /usr/share/man/man1 /usr/share/man/man7 \
7
14
  && apt -y update && apt-get install -y \
8
- bzip2 \
9
15
  default-mysql-client \
10
16
  exiftool \
11
17
  git-core \
12
18
  gnupg2 \
13
19
  imagemagick \
14
- libbz2-dev \
15
- libc-client-dev \
16
- libicu-dev \
17
- libjpeg62-turbo-dev \
18
- libkrb5-dev \
19
- libldap2-dev \
20
- libmagickwand-dev \
21
- libmemcached-dev \
22
- libpng-dev \
23
- libpq-dev \
24
- libssl-dev \
25
- libwebp-dev \
26
- libxml2-dev \
27
- libzip-dev \
28
20
  libonig-dev \
21
+ mariadb-client \
29
22
  openssl \
30
23
  postgresql-client-13 \
31
24
  pv \
@@ -34,45 +27,42 @@ RUN mkdir -p /usr/share/man/man1 /usr/share/man/man7 \
34
27
  unzip \
35
28
  wget \
36
29
  xfonts-75dpi \
37
- xfonts-base \
38
- zlib1g-dev \
39
- && pecl install apcu \
40
- && pecl install imagick \
41
- && pecl install memcached \
42
- && pecl install oauth-2.0.4 \
43
- && pecl install redis-5.1.1 \
44
- && pecl install xdebug-3.1.6 \
45
- && docker-php-ext-configure ldap --with-libdir=lib/$(uname -m)-linux-gnu/ \
46
- && docker-php-ext-enable apcu \
47
- && docker-php-ext-enable imagick \
48
- && docker-php-ext-enable memcached \
49
- && docker-php-ext-enable oauth \
50
- && docker-php-ext-enable redis \
51
- && docker-php-ext-install bcmath \
52
- && docker-php-ext-install bz2 \
53
- && docker-php-ext-install calendar \
54
- && docker-php-ext-install exif \
55
- && docker-php-ext-install gettext \
56
- && docker-php-ext-install intl \
57
- && docker-php-ext-install ldap \
58
- && docker-php-ext-install mbstring \
59
- && docker-php-ext-install mysqli \
60
- && docker-php-ext-install opcache \
61
- && docker-php-ext-install pcntl \
62
- && docker-php-ext-install pdo \
63
- && docker-php-ext-install pdo_mysql \
64
- && docker-php-ext-install pdo_pgsql \
65
- && docker-php-ext-install soap \
66
- && docker-php-ext-install zip \
67
- && php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
68
- && php composer-setup.php --install-dir=/usr/local/bin --filename=composer --version=2.2.12 \
69
- && php -r "unlink('composer-setup.php');" \
70
- && chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
30
+ xfonts-base
31
+
32
+ RUN \
33
+ install-php-extensions @fix_letsencrypt \
34
+ && install-php-extensions apcu \
35
+ && install-php-extensions bcmath \
36
+ && install-php-extensions bz2 \
37
+ && install-php-extensions calendar \
38
+ && install-php-extensions exif \
39
+ && install-php-extensions gd \
40
+ && install-php-extensions gettext \
41
+ && install-php-extensions imagick \
42
+ && install-php-extensions imap \
43
+ && install-php-extensions intl \
44
+ && install-php-extensions ldap \
45
+ && install-php-extensions mbstring \
46
+ && install-php-extensions memcached \
47
+ && install-php-extensions mysqli \
48
+ && install-php-extensions oauth \
49
+ && install-php-extensions opcache \
50
+ && install-php-extensions pcntl \
51
+ && install-php-extensions pdo \
52
+ && install-php-extensions pdo_mysql \
53
+ && install-php-extensions pdo_pgsql \
54
+ && install-php-extensions redis \
55
+ && install-php-extensions soap \
56
+ && install-php-extensions xhprof \
57
+ && install-php-extensions zip
58
+
59
+ # Install xdebug but disable it by default
60
+ RUN install-php-extensions xdebug \
61
+ && rm -f /usr/local/etc/php/conf.d/*xdebug.ini
62
+
63
+ RUN \
64
+ chsh -s /bin/bash www-data && mkdir -p /var/www/.composer && chown -R www-data:www-data /var/www \
71
65
  && apt-get -y clean \
72
66
  && apt-get -y autoclean \
73
67
  && apt-get -y autoremove \
74
- && rm -rf /var/lib/apt/lists/* && rm -rf && rm -rf /var/lib/cache/* && rm -rf /var/lib/log/* && rm -rf /tmp/* \
75
- && PHP_OPENSSL=yes docker-php-ext-configure imap --with-kerberos --with-imap-ssl \
76
- && docker-php-ext-install imap \
77
- && docker-php-ext-configure gd --enable-gd --with-freetype --with-jpeg --with-webp \
78
- && docker-php-ext-install gd
68
+ && rm -rf /var/lib/apt/lists/* && rm -rf && rm -rf /var/lib/cache/* && rm -rf /var/lib/log/* && rm -rf /tmp/*