@scandipwa/magento-scripts 2.4.2-alpha.2 → 2.4.2
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.
- package/lib/config/docker.js +19 -20
- package/lib/config/services/mariadb/versions/index.js +1 -0
- package/lib/config/services/mariadb/versions/mariadb-10.11.js +11 -0
- package/lib/config/services/mysql/versions/index.js +3 -1
- package/lib/config/services/mysql/versions/mysql-8.4.js +8 -0
- package/lib/config/services/varnish/index.js +2 -1
- package/lib/config/services/varnish/varnish-7-7.js +15 -0
- package/lib/config/versions/magento-2.4.5-p13.js +40 -0
- package/lib/config/versions/magento-2.4.6-p11.js +40 -0
- package/lib/config/versions/magento-2.4.7-p6.js +41 -0
- package/lib/config/versions/magento-2.4.8-p1.js +43 -0
- package/lib/config/versions/magento-2.4.8.js +0 -1
- package/lib/config/versions/magento-2.4.9-alpha1.js +41 -0
- package/lib/tasks/docker/containers/tasks.js +3 -16
- package/lib/tasks/docker/convert-mysql-to-mariadb.js +13 -3
- package/lib/tasks/docker/project-image-builder.js +6 -10
- package/lib/tasks/file-system/create-nginx-config.js +5 -8
- package/lib/tasks/magento/setup-magento/adjust-full-page-cache.js +42 -0
- package/lib/tasks/magento/setup-magento/configure-searchengine.js +0 -4
- package/lib/tasks/magento/setup-magento/index.js +7 -2
- package/lib/tasks/magento/setup-magento/migrate-database.js +3 -21
- package/lib/tasks/requirements/elasticsearch-version.js +87 -0
- package/lib/tasks/requirements/opensearch-version.js +71 -0
- package/lib/tasks/requirements/searchengine-version.js +8 -60
- package/lib/tasks/start.js +10 -1
- package/lib/tasks/theme/link-theme.js +2 -2
- package/package.json +2 -2
- package/typings/context.d.ts +0 -2
- package/lib/tasks/magento/setup-magento/enable-full-page-cache-with-varnish.js +0 -30
package/lib/config/docker.js
CHANGED
|
@@ -73,11 +73,11 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
73
73
|
redis: {
|
|
74
74
|
name: `${prefix}_redis-data`
|
|
75
75
|
},
|
|
76
|
+
elasticsearch: {
|
|
77
|
+
name: `${prefix}_elasticsearch-data`
|
|
78
|
+
},
|
|
76
79
|
opensearch: {
|
|
77
|
-
name:
|
|
78
|
-
searchengine === 'elasticsearch'
|
|
79
|
-
? `${prefix}_elasticsearch-data`
|
|
80
|
-
: `${prefix}_opensearch-data`
|
|
80
|
+
name: `${prefix}_opensearch-data`
|
|
81
81
|
},
|
|
82
82
|
maildev: {
|
|
83
83
|
name: `${prefix}_maildev-data`
|
|
@@ -115,7 +115,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
115
115
|
: {}
|
|
116
116
|
|
|
117
117
|
/**
|
|
118
|
-
* @type {Record<string, import('../tasks/docker/containers/container-api').ContainerRunOptions & { _?: string, forwardedPorts?: string[], remoteImages?: string[], connectCommand?: string[], description?: string, pullImage?: boolean, dependsOn?: string[]
|
|
118
|
+
* @type {Record<string, import('../tasks/docker/containers/container-api').ContainerRunOptions & { _?: string, forwardedPorts?: string[], remoteImages?: string[], connectCommand?: string[], description?: string, pullImage?: boolean, dependsOn?: string[] }>}
|
|
119
119
|
*/
|
|
120
120
|
const dockerConfig = {
|
|
121
121
|
php: {
|
|
@@ -169,8 +169,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
169
169
|
(ctx.platform === 'linux' && isDockerDesktop) ||
|
|
170
170
|
!isDockerDesktop
|
|
171
171
|
? `${os.userInfo().uid}:${os.userInfo().gid}`
|
|
172
|
-
: ''
|
|
173
|
-
serviceReadyLog: 'ready to handle connections'
|
|
172
|
+
: ''
|
|
174
173
|
},
|
|
175
174
|
phpWithXdebug: {
|
|
176
175
|
_: 'PHP with Xdebug',
|
|
@@ -229,8 +228,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
229
228
|
(ctx.platform === 'linux' && isDockerDesktop) ||
|
|
230
229
|
!isDockerDesktop
|
|
231
230
|
? `${os.userInfo().uid}:${os.userInfo().gid}`
|
|
232
|
-
: ''
|
|
233
|
-
serviceReadyLog: 'ready to handle connections'
|
|
231
|
+
: ''
|
|
234
232
|
},
|
|
235
233
|
sslTerminator: {
|
|
236
234
|
_: 'SSL Terminator (Nginx)',
|
|
@@ -339,8 +337,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
339
337
|
redis.version ? `redis:${redis.version}` : redis.image
|
|
340
338
|
}`,
|
|
341
339
|
name: `${prefix}_redis`,
|
|
342
|
-
connectCommand: ['redis-cli']
|
|
343
|
-
serviceReadyLog: 'Ready to accept connections'
|
|
340
|
+
connectCommand: ['redis-cli']
|
|
344
341
|
},
|
|
345
342
|
mariadb: {
|
|
346
343
|
_: 'MariaDB',
|
|
@@ -394,13 +391,15 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
394
391
|
ports: [`127.0.0.1:${ports.elasticsearch}:9200`],
|
|
395
392
|
forwardedPorts: [`127.0.0.1:${ports.elasticsearch}:9200`],
|
|
396
393
|
mountVolumes: [
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
394
|
+
searchengine === 'elasticsearch'
|
|
395
|
+
? containerVolume({
|
|
396
|
+
source: volumes.elasticsearch.name,
|
|
397
|
+
target: '/usr/share/elasticsearch/data'
|
|
398
|
+
})
|
|
399
|
+
: containerVolume({
|
|
400
|
+
source: volumes.opensearch.name,
|
|
401
|
+
target: '/usr/share/opensearch/data'
|
|
402
|
+
})
|
|
404
403
|
],
|
|
405
404
|
env:
|
|
406
405
|
searchengine === 'elasticsearch'
|
|
@@ -446,7 +445,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
446
445
|
mountVolumes: [
|
|
447
446
|
containerVolume({
|
|
448
447
|
source: volumes.maildev.name,
|
|
449
|
-
target: '/tmp'
|
|
448
|
+
target: '/tmp/maildev'
|
|
450
449
|
})
|
|
451
450
|
],
|
|
452
451
|
env: {
|
|
@@ -456,7 +455,7 @@ module.exports = async (ctx, overridenConfiguration, baseConfig) => {
|
|
|
456
455
|
MAILDEV_WEB_PORT: isDockerDesktop
|
|
457
456
|
? '1080'
|
|
458
457
|
: ports.maildevWeb,
|
|
459
|
-
MAILDEV_MAIL_DIRECTORY: '/tmp'
|
|
458
|
+
MAILDEV_MAIL_DIRECTORY: '/tmp/maildev'
|
|
460
459
|
},
|
|
461
460
|
name: `${prefix}_maildev`,
|
|
462
461
|
network: isDockerDesktop ? network.name : 'host',
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @returns {import('../../../../../typings/index').MariaDBConfiguration}
|
|
3
|
+
*/
|
|
4
|
+
const mariadb106 = () => ({
|
|
5
|
+
image: 'mariadb:10.11',
|
|
6
|
+
useOptimizerSwitch: true,
|
|
7
|
+
binFileName: 'mysql',
|
|
8
|
+
binAdminFileName: 'mysqladmin'
|
|
9
|
+
})
|
|
10
|
+
|
|
11
|
+
module.exports = mariadb106
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
const path = require('path')
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* @param {Object} param0
|
|
5
|
+
* @param {string} param0.templateDir
|
|
6
|
+
* @returns {import('../../../../typings/index').VarnishConfiguration}
|
|
7
|
+
*/
|
|
8
|
+
const varnish77 = ({ templateDir }) => ({
|
|
9
|
+
enabled: false,
|
|
10
|
+
healthCheck: false,
|
|
11
|
+
image: 'varnish:7.7',
|
|
12
|
+
configTemplate: path.join(templateDir || '', 'varnish.template.vcl')
|
|
13
|
+
})
|
|
14
|
+
|
|
15
|
+
module.exports = varnish77
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb106 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.5-p13',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb106(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php81 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer22 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb1011 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch717 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.6-p11',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php81({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.1-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb1011(),
|
|
33
|
+
elasticsearch: elasticsearch717(),
|
|
34
|
+
composer: composer22(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php82 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish76 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer28 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { redis72 } = require('../services/redis')
|
|
13
|
+
const { mariadb1011 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch817 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.7-p6',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php82({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.2-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: redis72(),
|
|
31
|
+
mysql: mysql80(),
|
|
32
|
+
mariadb: mariadb1011(),
|
|
33
|
+
elasticsearch: elasticsearch817(),
|
|
34
|
+
composer: composer28(),
|
|
35
|
+
varnish: varnish76({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219(),
|
|
39
|
+
searchengine: 'opensearch'
|
|
40
|
+
}
|
|
41
|
+
})
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const ftp = require('../services/php/extensions/ftp')
|
|
3
|
+
const {
|
|
4
|
+
magento24PHPExtensionList
|
|
5
|
+
} = require('../magento/required-php-extensions')
|
|
6
|
+
const { php83 } = require('../services/php/versions')
|
|
7
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
8
|
+
const { varnish76 } = require('../services/varnish')
|
|
9
|
+
const { repo } = require('../services/php/base-repo')
|
|
10
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
11
|
+
const { composer28 } = require('../services/composer/versions')
|
|
12
|
+
const { maildev } = require('../services/maildev')
|
|
13
|
+
const { valkey80 } = require('../services/redis')
|
|
14
|
+
const { mariadb114 } = require('../services/mariadb/versions')
|
|
15
|
+
const { elasticsearch817 } = require('../services/elasticsearch/versions')
|
|
16
|
+
const { mysql80 } = require('../services/mysql/versions')
|
|
17
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
21
|
+
*/
|
|
22
|
+
module.exports = ({ templateDir }) => ({
|
|
23
|
+
magentoVersion: '2.4.8-p1',
|
|
24
|
+
isDefault: true,
|
|
25
|
+
configuration: {
|
|
26
|
+
php: php83({
|
|
27
|
+
templateDir,
|
|
28
|
+
extensions: { ...magento24PHPExtensionList, sodium, ftp },
|
|
29
|
+
baseImage: `${repo}:php-8.3-magento-2.4`
|
|
30
|
+
}),
|
|
31
|
+
nginx: nginx126({ templateDir }),
|
|
32
|
+
redis: valkey80(),
|
|
33
|
+
mysql: mysql80(),
|
|
34
|
+
mariadb: mariadb114(),
|
|
35
|
+
elasticsearch: elasticsearch817(),
|
|
36
|
+
composer: composer28(),
|
|
37
|
+
varnish: varnish76({ templateDir }),
|
|
38
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
39
|
+
maildev: maildev(),
|
|
40
|
+
opensearch: opensearch219(),
|
|
41
|
+
searchengine: 'opensearch'
|
|
42
|
+
}
|
|
43
|
+
})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
const sodium = require('../services/php/extensions/sodium')
|
|
2
|
+
const {
|
|
3
|
+
magento24PHPExtensionList
|
|
4
|
+
} = require('../magento/required-php-extensions')
|
|
5
|
+
const { php83 } = require('../services/php/versions')
|
|
6
|
+
const { sslTerminator } = require('../services/ssl-terminator')
|
|
7
|
+
const { varnish77 } = require('../services/varnish')
|
|
8
|
+
const { repo } = require('../services/php/base-repo')
|
|
9
|
+
const { nginx126 } = require('../services/nginx/versions')
|
|
10
|
+
const { composer28 } = require('../services/composer/versions')
|
|
11
|
+
const { maildev } = require('../services/maildev')
|
|
12
|
+
const { valkey80 } = require('../services/redis')
|
|
13
|
+
const { mariadb114 } = require('../services/mariadb/versions')
|
|
14
|
+
const { elasticsearch87 } = require('../services/elasticsearch/versions')
|
|
15
|
+
const { mysql84 } = require('../services/mysql/versions')
|
|
16
|
+
const { opensearch219 } = require('../services/opensearch/versions')
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* @type {import('../../../typings/common').MagentoVersionConfigurationFunction}
|
|
20
|
+
*/
|
|
21
|
+
module.exports = ({ templateDir }) => ({
|
|
22
|
+
magentoVersion: '2.4.9-alpha1',
|
|
23
|
+
configuration: {
|
|
24
|
+
php: php83({
|
|
25
|
+
templateDir,
|
|
26
|
+
extensions: { ...magento24PHPExtensionList, sodium },
|
|
27
|
+
baseImage: `${repo}:php-8.3-magento-2.4`
|
|
28
|
+
}),
|
|
29
|
+
nginx: nginx126({ templateDir }),
|
|
30
|
+
redis: valkey80(),
|
|
31
|
+
mysql: mysql84(),
|
|
32
|
+
mariadb: mariadb114(),
|
|
33
|
+
elasticsearch: elasticsearch87(),
|
|
34
|
+
composer: composer28(),
|
|
35
|
+
varnish: varnish77({ templateDir }),
|
|
36
|
+
sslTerminator: sslTerminator({ templateDir }),
|
|
37
|
+
maildev: maildev(),
|
|
38
|
+
opensearch: opensearch219(),
|
|
39
|
+
searchengine: 'opensearch'
|
|
40
|
+
}
|
|
41
|
+
})
|
|
@@ -5,7 +5,6 @@ const KnownError = require('../../../errors/known-error')
|
|
|
5
5
|
const containerApi = require('./container-api')
|
|
6
6
|
const { imageApi } = require('../image')
|
|
7
7
|
const { execAsyncSpawn } = require('../../../util/exec-async-command')
|
|
8
|
-
const waitForLogs = require('../../../util/wait-for-logs')
|
|
9
8
|
|
|
10
9
|
/**
|
|
11
10
|
* @param {string[]} containers
|
|
@@ -155,9 +154,7 @@ const startContainers = () => ({
|
|
|
155
154
|
all: true
|
|
156
155
|
})
|
|
157
156
|
|
|
158
|
-
const
|
|
159
|
-
|
|
160
|
-
const missingContainers = Object.entries(containers)
|
|
157
|
+
const missingContainers = Object.entries(docker.getContainers(ports))
|
|
161
158
|
.filter(
|
|
162
159
|
([nameWithoutPrefix, { name }]) =>
|
|
163
160
|
!containerList.some((c) => c.Names === name)
|
|
@@ -192,9 +189,7 @@ const startContainers = () => ({
|
|
|
192
189
|
const startedContainers = []
|
|
193
190
|
subTask.title = `Container ${
|
|
194
191
|
container._
|
|
195
|
-
} is waiting for ${dependsOn
|
|
196
|
-
.map((a) => containers[a]._)
|
|
197
|
-
.join(', ')} to start...`
|
|
192
|
+
} is waiting for ${dependsOn.join(', ')} to start...`
|
|
198
193
|
await Promise.all(
|
|
199
194
|
dependsOn.map(
|
|
200
195
|
async (name) =>
|
|
@@ -222,7 +217,6 @@ const startContainers = () => ({
|
|
|
222
217
|
d
|
|
223
218
|
)
|
|
224
219
|
)
|
|
225
|
-
.map((d) => containers[d]._)
|
|
226
220
|
.join(', ')} to start...`
|
|
227
221
|
clearTimeout(timeout)
|
|
228
222
|
resolve()
|
|
@@ -237,13 +231,6 @@ const startContainers = () => ({
|
|
|
237
231
|
|
|
238
232
|
await containerApi.run(container)
|
|
239
233
|
|
|
240
|
-
if (container.serviceReadyLog) {
|
|
241
|
-
await waitForLogs({
|
|
242
|
-
containerName: container.name,
|
|
243
|
-
matchText: container.serviceReadyLog
|
|
244
|
-
})
|
|
245
|
-
}
|
|
246
|
-
|
|
247
234
|
containerStatuses[
|
|
248
235
|
container.nameWithoutPrefix
|
|
249
236
|
].started = true
|
|
@@ -253,7 +240,7 @@ const startContainers = () => ({
|
|
|
253
240
|
cb()
|
|
254
241
|
})
|
|
255
242
|
|
|
256
|
-
subTask.
|
|
243
|
+
subTask.output = `${container._} container started`
|
|
257
244
|
}
|
|
258
245
|
})),
|
|
259
246
|
{
|
|
@@ -24,7 +24,7 @@ const { createCacheFolder } = require('../cache')
|
|
|
24
24
|
const { getSystemConfigTask } = require('../../config/system-config')
|
|
25
25
|
const sleep = require('../../util/sleep')
|
|
26
26
|
const { setProjectConfigTask } = require('../project-config')
|
|
27
|
-
const
|
|
27
|
+
const checkElasticSearchVersion = require('../requirements/elasticsearch-version')
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
30
|
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
@@ -235,13 +235,23 @@ Please wait, this will take some time and do not restart the MySQL container unt
|
|
|
235
235
|
dockerNetwork.tasks.createNetwork(),
|
|
236
236
|
createVolumes(),
|
|
237
237
|
buildProjectImage(),
|
|
238
|
-
|
|
238
|
+
{
|
|
239
|
+
task: (ctx, subTask) =>
|
|
240
|
+
subTask.newListr(
|
|
241
|
+
[
|
|
242
|
+
checkPHPVersion(),
|
|
243
|
+
checkElasticSearchVersion()
|
|
244
|
+
],
|
|
245
|
+
{
|
|
246
|
+
concurrent: true
|
|
247
|
+
}
|
|
248
|
+
)
|
|
249
|
+
},
|
|
239
250
|
getComposerVersionTask(),
|
|
240
251
|
prepareFileSystem(),
|
|
241
252
|
installMagentoProject(),
|
|
242
253
|
enableMagentoComposerPlugins(),
|
|
243
254
|
startServices(),
|
|
244
|
-
checkSearchEngineVersion(),
|
|
245
255
|
connectToDatabase(),
|
|
246
256
|
importDumpToDatabase(),
|
|
247
257
|
{
|
|
@@ -316,11 +316,9 @@ const buildProjectImage = () => ({
|
|
|
316
316
|
${dockerFileInstructions}
|
|
317
317
|
EOF`,
|
|
318
318
|
{
|
|
319
|
-
callback:
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
task.output = t
|
|
323
|
-
}
|
|
319
|
+
callback: (r) => {
|
|
320
|
+
task.output = r
|
|
321
|
+
}
|
|
324
322
|
}
|
|
325
323
|
)
|
|
326
324
|
} catch (e) {
|
|
@@ -346,11 +344,9 @@ EOF`,
|
|
|
346
344
|
${debugImageInstructions}
|
|
347
345
|
EOF`,
|
|
348
346
|
{
|
|
349
|
-
callback:
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
task.output = t
|
|
353
|
-
}
|
|
347
|
+
callback: (r) => {
|
|
348
|
+
task.output = r
|
|
349
|
+
}
|
|
354
350
|
}
|
|
355
351
|
)
|
|
356
352
|
} catch (e) {
|
|
@@ -28,16 +28,13 @@ const createNginxConfig = () => ({
|
|
|
28
28
|
}
|
|
29
29
|
|
|
30
30
|
if (isDockerDesktop) {
|
|
31
|
-
|
|
31
|
+
const containers = docker.getContainers(ports)
|
|
32
32
|
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
networkSettings.phpNetwork = containers.php.name
|
|
34
|
+
networkSettings.phpWithXdebugNetwork = containers.phpWithXdebug.name
|
|
35
35
|
|
|
36
|
-
networkSettings.
|
|
37
|
-
networkSettings.
|
|
38
|
-
|
|
39
|
-
// networkSettings.fpmPort = 9000
|
|
40
|
-
// networkSettings.fpmXdebugPort = 9000
|
|
36
|
+
networkSettings.fpmPort = 9000
|
|
37
|
+
networkSettings.fpmXdebugPort = 9000
|
|
41
38
|
|
|
42
39
|
networkSettings.hostPort = 80
|
|
43
40
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const envPhpToJson = require('../../../util/env-php-json')
|
|
2
|
+
const magentoTask = require('../../../util/magento-task')
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
|
|
6
|
+
*/
|
|
7
|
+
const disableFullPageCache = () => ({
|
|
8
|
+
title: 'Adjusting full_page cache setting',
|
|
9
|
+
task: async (ctx, task) => {
|
|
10
|
+
const envData = await envPhpToJson(ctx)
|
|
11
|
+
if (
|
|
12
|
+
envData &&
|
|
13
|
+
envData.cache_types &&
|
|
14
|
+
typeof envData.cache_types.full_page === 'number'
|
|
15
|
+
) {
|
|
16
|
+
if (
|
|
17
|
+
envData.cache_types.full_page !== 0 &&
|
|
18
|
+
!ctx.config.overridenConfiguration.configuration.varnish.enabled
|
|
19
|
+
) {
|
|
20
|
+
task.title = 'Disabling full_page cache in Magento'
|
|
21
|
+
return task.newListr(magentoTask('cache:disable full_page'))
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
if (
|
|
25
|
+
ctx.config.overridenConfiguration.configuration.varnish
|
|
26
|
+
.enabled &&
|
|
27
|
+
envData.cache_types.full_page !== 1
|
|
28
|
+
) {
|
|
29
|
+
task.title =
|
|
30
|
+
'Enabling full_page cache in Magento (Varnish is enabled)'
|
|
31
|
+
return task.newListr(magentoTask('cache:enable full_page'))
|
|
32
|
+
}
|
|
33
|
+
} else {
|
|
34
|
+
task.skip('full_page cache type is not set in env.php')
|
|
35
|
+
return
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
task.skip()
|
|
39
|
+
}
|
|
40
|
+
})
|
|
41
|
+
|
|
42
|
+
module.exports = disableFullPageCache
|
|
@@ -167,8 +167,6 @@ const configureElasticSearchInDatabase = () => ({
|
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
)
|
|
170
|
-
|
|
171
|
-
task.title = `Using Elasticsearch ${ctx.elasticSearchVersion}`
|
|
172
170
|
}
|
|
173
171
|
})
|
|
174
172
|
|
|
@@ -358,8 +356,6 @@ const configureOpenSearchInDatabase = () => ({
|
|
|
358
356
|
}
|
|
359
357
|
}
|
|
360
358
|
)
|
|
361
|
-
|
|
362
|
-
task.title = `Using OpenSearch ${ctx.openSearchVersion}`
|
|
363
359
|
}
|
|
364
360
|
})
|
|
365
361
|
|
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
const flushRedisConfig = require('./flush-redis-config')
|
|
2
|
+
const waitingForRedis = require('./waiting-for-redis')
|
|
2
3
|
const migrateDatabase = require('./migrate-database')
|
|
3
4
|
const createAdmin = require('./create-admin')
|
|
4
5
|
const setDeploymentMode = require('./set-deployment-mode')
|
|
5
6
|
const setBaseUrl = require('./set-base-url')
|
|
6
7
|
const disableMaintenanceMode = require('./disable-maintenance-mode')
|
|
8
|
+
const disable2fa = require('./disable-2fa')
|
|
7
9
|
const setUrlRewrite = require('./set-url-rewrite')
|
|
8
10
|
const increaseAdminSessionLifetime = require('./increase-admin-session-lifetime')
|
|
9
11
|
const magentoTask = require('../../../util/magento-task')
|
|
10
12
|
const urnHighlighter = require('./urn-highlighter')
|
|
11
|
-
const
|
|
13
|
+
const adjustFullPageCache = require('./adjust-full-page-cache')
|
|
12
14
|
const updateEnvPHP = require('../../php/update-env-php')
|
|
13
15
|
const setMailConfig = require('./set-mail-config')
|
|
14
16
|
const { setupMagentoFilePermissions } = require('./setup-file-permissions')
|
|
@@ -25,12 +27,14 @@ const setupMagento = (options = {}) => ({
|
|
|
25
27
|
if (options.onlyInstallMagento) {
|
|
26
28
|
return task.newListr([
|
|
27
29
|
flushRedisConfig(),
|
|
30
|
+
waitingForRedis(),
|
|
28
31
|
migrateDatabase({ onlyInstallMagento: true })
|
|
29
32
|
])
|
|
30
33
|
}
|
|
31
34
|
|
|
32
35
|
return task.newListr(
|
|
33
36
|
[
|
|
37
|
+
waitingForRedis(),
|
|
34
38
|
setupMagentoFilePermissions(),
|
|
35
39
|
updateEnvPHP(),
|
|
36
40
|
migrateDatabase(),
|
|
@@ -56,8 +60,9 @@ const setupMagento = (options = {}) => ({
|
|
|
56
60
|
createAdmin(),
|
|
57
61
|
setDeploymentMode(),
|
|
58
62
|
disableMaintenanceMode(),
|
|
63
|
+
disable2fa(),
|
|
59
64
|
urnHighlighter(),
|
|
60
|
-
|
|
65
|
+
adjustFullPageCache(),
|
|
61
66
|
magentoTask('cache:flush')
|
|
62
67
|
],
|
|
63
68
|
{
|
|
@@ -9,7 +9,6 @@ const varnishConfigSetup = require('./varnish-config')
|
|
|
9
9
|
const pathExists = require('../../../util/path-exists')
|
|
10
10
|
const updateEnvPHP = require('../../php/update-env-php')
|
|
11
11
|
const UnknownError = require('../../../errors/unknown-error')
|
|
12
|
-
const checkSearchEngineVersion = require('../../requirements/searchengine-version')
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* @param {Object} [options]
|
|
@@ -20,7 +19,6 @@ const migrateDatabase = (options = {}) => ({
|
|
|
20
19
|
title: 'Migrating database',
|
|
21
20
|
task: async (ctx, task) => {
|
|
22
21
|
const { databaseConnection } = ctx
|
|
23
|
-
const { varnish } = ctx.config.overridenConfiguration.configuration
|
|
24
22
|
|
|
25
23
|
const [[{ tableCount }]] = await databaseConnection.query(`
|
|
26
24
|
SELECT count(*) AS tableCount
|
|
@@ -46,17 +44,12 @@ const migrateDatabase = (options = {}) => ({
|
|
|
46
44
|
|
|
47
45
|
return task.newListr(
|
|
48
46
|
[
|
|
49
|
-
checkSearchEngineVersion(),
|
|
50
47
|
installMagento({ isDbEmpty: true }),
|
|
51
48
|
updateEnvPHP(),
|
|
52
49
|
varnishConfigSetup(),
|
|
53
50
|
configureSearchEngine(),
|
|
54
51
|
upgradeMagento(),
|
|
55
|
-
magentoTask(
|
|
56
|
-
`cache:disable block_html layout${
|
|
57
|
-
!varnish.enabled ? ' full_page' : ''
|
|
58
|
-
}`
|
|
59
|
-
)
|
|
52
|
+
magentoTask('cache:enable')
|
|
60
53
|
],
|
|
61
54
|
{
|
|
62
55
|
concurrent: false,
|
|
@@ -82,11 +75,7 @@ const migrateDatabase = (options = {}) => ({
|
|
|
82
75
|
ctx.isSetupUpgradeNeeded = false
|
|
83
76
|
// no setup is needed, but still to be sure configure ES
|
|
84
77
|
return task.newListr(
|
|
85
|
-
[
|
|
86
|
-
checkSearchEngineVersion(),
|
|
87
|
-
varnishConfigSetup(),
|
|
88
|
-
configureSearchEngine()
|
|
89
|
-
],
|
|
78
|
+
[varnishConfigSetup(), configureSearchEngine()],
|
|
90
79
|
{
|
|
91
80
|
concurrent: false,
|
|
92
81
|
exitOnError: true,
|
|
@@ -101,7 +90,6 @@ const migrateDatabase = (options = {}) => ({
|
|
|
101
90
|
if (options.onlyInstallMagento) {
|
|
102
91
|
ctx.isSetupUpgradeNeeded = false
|
|
103
92
|
return task.newListr([
|
|
104
|
-
checkSearchEngineVersion(),
|
|
105
93
|
installMagentoProject(),
|
|
106
94
|
installMagento()
|
|
107
95
|
])
|
|
@@ -109,18 +97,13 @@ const migrateDatabase = (options = {}) => ({
|
|
|
109
97
|
|
|
110
98
|
return task.newListr(
|
|
111
99
|
[
|
|
112
|
-
checkSearchEngineVersion(),
|
|
113
100
|
installMagentoProject(),
|
|
114
101
|
installMagento(),
|
|
115
102
|
updateEnvPHP(),
|
|
116
103
|
varnishConfigSetup(),
|
|
117
104
|
configureSearchEngine(),
|
|
118
105
|
upgradeMagento(),
|
|
119
|
-
magentoTask(
|
|
120
|
-
`cache:disable block_html layout${
|
|
121
|
-
!varnish.enabled ? ' full_page' : ''
|
|
122
|
-
}`
|
|
123
|
-
)
|
|
106
|
+
magentoTask('cache:enable')
|
|
124
107
|
],
|
|
125
108
|
{
|
|
126
109
|
concurrent: false,
|
|
@@ -135,7 +118,6 @@ const migrateDatabase = (options = {}) => ({
|
|
|
135
118
|
case 2: {
|
|
136
119
|
return task.newListr(
|
|
137
120
|
[
|
|
138
|
-
checkSearchEngineVersion(),
|
|
139
121
|
varnishConfigSetup(),
|
|
140
122
|
configureSearchEngine(),
|
|
141
123
|
upgradeMagento()
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
const { getPort } = require('../../config/port-config')
|
|
2
|
+
const KnownError = require('../../errors/known-error')
|
|
3
|
+
const UnknownError = require('../../errors/unknown-error')
|
|
4
|
+
const { containerApi } = require('../docker/containers')
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
8
|
+
*/
|
|
9
|
+
const checkElasticSearchVersion = () => ({
|
|
10
|
+
title: 'Checking container ElasticSearch version',
|
|
11
|
+
task: async (ctx, task) => {
|
|
12
|
+
const { elasticsearch } =
|
|
13
|
+
ctx.config.overridenConfiguration.configuration
|
|
14
|
+
const { ports } = ctx
|
|
15
|
+
|
|
16
|
+
const { elasticsearch: elasticSearchContainer } =
|
|
17
|
+
ctx.config.docker.getContainers(ports)
|
|
18
|
+
|
|
19
|
+
let elasticSearchVersionResponse
|
|
20
|
+
|
|
21
|
+
const elasticSearchContainerRunning = await containerApi.ls({
|
|
22
|
+
filter: `name=${elasticSearchContainer.name}`,
|
|
23
|
+
formatToJSON: true
|
|
24
|
+
})
|
|
25
|
+
|
|
26
|
+
if (
|
|
27
|
+
elasticSearchContainerRunning.length !== 0 &&
|
|
28
|
+
elasticSearchContainerRunning[0].State === 'running'
|
|
29
|
+
) {
|
|
30
|
+
elasticSearchVersionResponse = await containerApi.exec({
|
|
31
|
+
command: 'elasticsearch --version',
|
|
32
|
+
container: elasticSearchContainer.name
|
|
33
|
+
})
|
|
34
|
+
} else {
|
|
35
|
+
try {
|
|
36
|
+
const availableElasticSearchPort = await getPort(
|
|
37
|
+
ports.elasticsearch
|
|
38
|
+
)
|
|
39
|
+
elasticSearchVersionResponse = await containerApi.run({
|
|
40
|
+
...elasticsearch,
|
|
41
|
+
command: 'elasticsearch --version',
|
|
42
|
+
detach: false,
|
|
43
|
+
rm: true,
|
|
44
|
+
ports: [`127.0.0.1:${availableElasticSearchPort}:9200`],
|
|
45
|
+
memory: '2gb'
|
|
46
|
+
})
|
|
47
|
+
} catch (e) {
|
|
48
|
+
elasticSearchVersionResponse = e.message
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
if (
|
|
53
|
+
ctx.cgroupVersion === 'v2' &&
|
|
54
|
+
elasticSearchVersionResponse.includes(
|
|
55
|
+
'Cannot invoke "jdk.internal.platform.CgroupInfo.getMountPoint()" because "anyController" is null'
|
|
56
|
+
)
|
|
57
|
+
) {
|
|
58
|
+
throw new KnownError(`ElasticSearch failed to start up due to a JVM bug with CGroup version 2.
|
|
59
|
+
Similar issue on StackOverflow: https://stackoverflow.com/q/71532170.
|
|
60
|
+
|
|
61
|
+
Right now is check if OpenSearch works with your version of Magento.
|
|
62
|
+
Follow the documentation: https://docs.create-magento-app.com/getting-started/config-file#searchengine-opensearch-elasticsearch
|
|
63
|
+
|
|
64
|
+
If it will not help, try updating ElasticSearch image version: https://docs.create-magento-app.com/getting-started/config-file#elasticsearch
|
|
65
|
+
`)
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const elasticSearchVersionResponseResult =
|
|
69
|
+
elasticSearchVersionResponse.match(/Version:\s(\d+\.\d+\.\d+)/i)
|
|
70
|
+
|
|
71
|
+
if (
|
|
72
|
+
elasticSearchVersionResponseResult &&
|
|
73
|
+
elasticSearchVersionResponseResult.length > 0
|
|
74
|
+
) {
|
|
75
|
+
const elasticSearchVersion = elasticSearchVersionResponseResult[1]
|
|
76
|
+
|
|
77
|
+
ctx.elasticSearchVersion = elasticSearchVersion
|
|
78
|
+
task.title = `Using ElasticSearch version ${elasticSearchVersion} in container`
|
|
79
|
+
} else {
|
|
80
|
+
throw new UnknownError(
|
|
81
|
+
`Cannot retrieve ElasticSearch Version!\n\n${elasticSearchVersionResponse}`
|
|
82
|
+
)
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
})
|
|
86
|
+
|
|
87
|
+
module.exports = checkElasticSearchVersion
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
const { getPort } = require('../../config/port-config')
|
|
2
|
+
const UnknownError = require('../../errors/unknown-error')
|
|
3
|
+
const { containerApi } = require('../docker/containers')
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
7
|
+
*/
|
|
8
|
+
const checkOpenSearchVersion = () => ({
|
|
9
|
+
title: 'Checking container OpenSearch version',
|
|
10
|
+
task: async (ctx, task) => {
|
|
11
|
+
const { opensearch } = ctx.config.overridenConfiguration.configuration
|
|
12
|
+
const { ports } = ctx
|
|
13
|
+
|
|
14
|
+
const { elasticsearch: openSearchContainer } =
|
|
15
|
+
ctx.config.docker.getContainers(ports)
|
|
16
|
+
|
|
17
|
+
let openSearchVersionResponse
|
|
18
|
+
|
|
19
|
+
const openSearchContainerRunning = await containerApi.ls({
|
|
20
|
+
filter: `name=${openSearchContainer.name}`,
|
|
21
|
+
formatToJSON: true
|
|
22
|
+
})
|
|
23
|
+
|
|
24
|
+
if (
|
|
25
|
+
openSearchContainerRunning.length !== 0 &&
|
|
26
|
+
openSearchContainerRunning[0].State === 'running'
|
|
27
|
+
) {
|
|
28
|
+
openSearchVersionResponse = await containerApi.exec({
|
|
29
|
+
command: 'opensearch --version',
|
|
30
|
+
container: openSearchContainer.name
|
|
31
|
+
})
|
|
32
|
+
} else {
|
|
33
|
+
try {
|
|
34
|
+
const availableOpenSearchPort = await getPort(
|
|
35
|
+
ports.elasticsearch
|
|
36
|
+
)
|
|
37
|
+
openSearchVersionResponse = await containerApi.run({
|
|
38
|
+
...opensearch,
|
|
39
|
+
command: 'opensearch --version',
|
|
40
|
+
detach: false,
|
|
41
|
+
rm: true,
|
|
42
|
+
ports: [`127.0.0.1:${availableOpenSearchPort}:9200`],
|
|
43
|
+
memory: '2gb'
|
|
44
|
+
})
|
|
45
|
+
} catch (e) {
|
|
46
|
+
openSearchVersionResponse = e.message
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const openSearchVersionResponseResult = openSearchVersionResponse.match(
|
|
51
|
+
/Version:\s(\d+\.\d+\.\d+)/i
|
|
52
|
+
)
|
|
53
|
+
|
|
54
|
+
if (
|
|
55
|
+
openSearchVersionResponseResult &&
|
|
56
|
+
openSearchVersionResponseResult.length > 0
|
|
57
|
+
) {
|
|
58
|
+
const openSearchVersion = openSearchVersionResponseResult[1]
|
|
59
|
+
|
|
60
|
+
ctx.openSearchVersion = openSearchVersion
|
|
61
|
+
task.title = `Using OpenSearch version ${openSearchVersion} in container`
|
|
62
|
+
} else {
|
|
63
|
+
throw new UnknownError(
|
|
64
|
+
`Cannot retrieve OpenSearch Version!\n\n${openSearchVersionResponse}`
|
|
65
|
+
)
|
|
66
|
+
}
|
|
67
|
+
},
|
|
68
|
+
exitOnError: false
|
|
69
|
+
})
|
|
70
|
+
|
|
71
|
+
module.exports = checkOpenSearchVersion
|
|
@@ -1,70 +1,18 @@
|
|
|
1
|
-
const
|
|
2
|
-
const
|
|
3
|
-
const waitForLogs = require('../../util/wait-for-logs')
|
|
1
|
+
const checkElasticSearchVersion = require('./elasticsearch-version')
|
|
2
|
+
const checkOpenSearchVersion = require('./opensearch-version')
|
|
4
3
|
|
|
5
4
|
/**
|
|
6
5
|
* @returns {import('listr2').ListrTask<import('../../../typings/context').ListrContext>}
|
|
7
6
|
*/
|
|
8
7
|
const checkSearchEngineVersion = () => ({
|
|
9
8
|
task: async (ctx, task) => {
|
|
10
|
-
const {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
configuration: { searchengine }
|
|
15
|
-
}
|
|
16
|
-
}
|
|
17
|
-
} = ctx
|
|
18
|
-
|
|
19
|
-
const { elasticsearch } = ctx.config.docker.getContainers(ports)
|
|
20
|
-
|
|
21
|
-
await waitForLogs({
|
|
22
|
-
containerName: elasticsearch.name,
|
|
23
|
-
matchText:
|
|
24
|
-
searchengine === 'elasticsearch' ? '"started"' : '] started'
|
|
25
|
-
})
|
|
26
|
-
|
|
27
|
-
try {
|
|
28
|
-
const response = await request(
|
|
29
|
-
`http://localhost:${ports.elasticsearch}/`,
|
|
30
|
-
{
|
|
31
|
-
method: 'GET',
|
|
32
|
-
responseType: 'json'
|
|
33
|
-
}
|
|
34
|
-
)
|
|
35
|
-
|
|
36
|
-
if (response.status !== 200) {
|
|
37
|
-
if (
|
|
38
|
-
ctx.config.overridenConfiguration.configuration
|
|
39
|
-
.searchengine === 'opensearch'
|
|
40
|
-
) {
|
|
41
|
-
throw new UnknownError(
|
|
42
|
-
`OpenSearch container is not running!\n\nStatus code: ${response.status}, Response: ${response.data.message}`
|
|
43
|
-
)
|
|
44
|
-
} else {
|
|
45
|
-
throw new UnknownError(
|
|
46
|
-
`ElasticSearch container is not running!\n\nStatus code: ${response.status}, Response: ${response.data.message}`
|
|
47
|
-
)
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
const searchEngineVersion = response.data.version.number
|
|
52
|
-
if (searchengine === 'elasticsearch') {
|
|
53
|
-
ctx.elasticSearchVersion = searchEngineVersion
|
|
54
|
-
} else {
|
|
55
|
-
ctx.openSearchVersion = searchEngineVersion
|
|
56
|
-
}
|
|
57
|
-
} catch (e) {
|
|
58
|
-
if (searchengine === 'opensearch') {
|
|
59
|
-
throw new UnknownError(
|
|
60
|
-
`Cannot connect to OpenSearch container!\n\n${e.message}`
|
|
61
|
-
)
|
|
62
|
-
} else {
|
|
63
|
-
throw new UnknownError(
|
|
64
|
-
`Cannot connect to ElasticSearch container!\n\n${e.message}`
|
|
65
|
-
)
|
|
66
|
-
}
|
|
9
|
+
const { searchengine = 'elasticsearch' } =
|
|
10
|
+
ctx.config.overridenConfiguration.configuration
|
|
11
|
+
if (searchengine === 'opensearch') {
|
|
12
|
+
return task.newListr(checkOpenSearchVersion())
|
|
67
13
|
}
|
|
14
|
+
|
|
15
|
+
return task.newListr(checkElasticSearchVersion())
|
|
68
16
|
}
|
|
69
17
|
})
|
|
70
18
|
|
package/lib/tasks/start.js
CHANGED
|
@@ -38,6 +38,7 @@ const { setProjectConfigTask } = require('./project-config')
|
|
|
38
38
|
const {
|
|
39
39
|
convertComposerHomeToComposerCacheVolume
|
|
40
40
|
} = require('./docker/convert-composer-home-to-composer-cache-volume')
|
|
41
|
+
const checkSearchEngineVersion = require('./requirements/searchengine-version')
|
|
41
42
|
|
|
42
43
|
/**
|
|
43
44
|
* @returns {import('listr2').ListrTask<import('../../typings/context').ListrContext>}
|
|
@@ -128,7 +129,15 @@ const configureProject = () => ({
|
|
|
128
129
|
{ concurrent: true }
|
|
129
130
|
)
|
|
130
131
|
},
|
|
131
|
-
|
|
132
|
+
{
|
|
133
|
+
task: (ctx, subTask) =>
|
|
134
|
+
subTask.newListr(
|
|
135
|
+
[checkPHPVersion(), checkSearchEngineVersion()],
|
|
136
|
+
{
|
|
137
|
+
concurrent: true
|
|
138
|
+
}
|
|
139
|
+
)
|
|
140
|
+
},
|
|
132
141
|
buildProjectImage(),
|
|
133
142
|
getComposerVersionTask(),
|
|
134
143
|
prepareFileSystem(),
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
const symlinkTheme = require('./symlink-theme')
|
|
2
2
|
const installTheme = require('./install-theme')
|
|
3
|
-
const
|
|
3
|
+
const adjustFullPageCache = require('../magento/setup-magento/adjust-full-page-cache')
|
|
4
4
|
const disablePageBuilder = require('../magento/setup-magento/disable-page-builder')
|
|
5
5
|
const buildTheme = require('./build-theme')
|
|
6
6
|
const upgradeMagento = require('../magento/setup-magento/upgrade-magento')
|
|
@@ -55,7 +55,7 @@ const linkTheme = () => ({
|
|
|
55
55
|
installTheme(theme),
|
|
56
56
|
updateEnvPHP(),
|
|
57
57
|
upgradeMagento(),
|
|
58
|
-
|
|
58
|
+
adjustFullPageCache(),
|
|
59
59
|
...(isPageBuilderInstalled && Number(isPagebuilderEnabled)
|
|
60
60
|
? [disablePageBuilder()]
|
|
61
61
|
: []),
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"description": "Scripts and configuration used by CMA.",
|
|
4
4
|
"homepage": "https://docs.create-magento-app.com/",
|
|
5
5
|
"repository": "github:scandipwa/create-magento-app",
|
|
6
|
-
"version": "2.4.2
|
|
6
|
+
"version": "2.4.2",
|
|
7
7
|
"main": "./index.js",
|
|
8
8
|
"types": "./typings/index.d.ts",
|
|
9
9
|
"license": "OSL-3.0",
|
|
@@ -59,5 +59,5 @@
|
|
|
59
59
|
"@types/node": "^20.14.11",
|
|
60
60
|
"@types/yargs": "^17.0.32"
|
|
61
61
|
},
|
|
62
|
-
"gitHead": "
|
|
62
|
+
"gitHead": "fc6fc272e01ce2442814452a14e0d2c6fe28a9f7"
|
|
63
63
|
}
|
package/typings/context.d.ts
CHANGED
|
@@ -118,7 +118,6 @@ export interface ListrContext {
|
|
|
118
118
|
command: string
|
|
119
119
|
connectCommand: string[]
|
|
120
120
|
dependsOn?: string[]
|
|
121
|
-
serviceReadyLog?: string
|
|
122
121
|
}
|
|
123
122
|
>
|
|
124
123
|
}
|
|
@@ -155,5 +154,4 @@ export interface ListrContext {
|
|
|
155
154
|
dockerServerData?: DockerVersionResult['Server']
|
|
156
155
|
dockerClientData?: DockerVersionResult['Client']
|
|
157
156
|
dockerVersion?: DockerVersionResult['Server']['Version']
|
|
158
|
-
dockerMemoryLimit: number
|
|
159
157
|
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
const envPhpToJson = require('../../../util/env-php-json')
|
|
2
|
-
const magentoTask = require('../../../util/magento-task')
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* @returns {import('listr2').ListrTask<import('../../../../typings/context').ListrContext>}
|
|
6
|
-
*/
|
|
7
|
-
const enableFullPageCacheWithVarnish = () => ({
|
|
8
|
-
skip: (ctx) => {
|
|
9
|
-
const { varnish } = ctx.config.overridenConfiguration.configuration
|
|
10
|
-
|
|
11
|
-
return !varnish.enabled
|
|
12
|
-
},
|
|
13
|
-
task: async (ctx, task) => {
|
|
14
|
-
const envData = await envPhpToJson(ctx)
|
|
15
|
-
if (
|
|
16
|
-
envData &&
|
|
17
|
-
envData.cache_types &&
|
|
18
|
-
typeof envData.cache_types.full_page === 'number' &&
|
|
19
|
-
envData.cache_types.full_page !== 1
|
|
20
|
-
) {
|
|
21
|
-
task.title =
|
|
22
|
-
'Enabling full_page cache in Magento (Varnish is enabled)'
|
|
23
|
-
return task.newListr(magentoTask('cache:enable full_page'))
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
task.skip()
|
|
27
|
-
}
|
|
28
|
-
})
|
|
29
|
-
|
|
30
|
-
module.exports = enableFullPageCacheWithVarnish
|