Skip to content

Commit a80027b

Browse files
MCLOUD-5890: Improve Cloud Docker performance (#208)
1 parent ba49061 commit a80027b

File tree

5 files changed

+133
-129
lines changed

5 files changed

+133
-129
lines changed

src/Compose/ProductionBuilder.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,6 @@ public function build(Config $config): Manager
147147

148148
$volumes = [self::VOLUME_MAGENTO => $this->getVolumeConfig()];
149149

150-
if ($config->hasServiceEnabled(ServiceInterface::SERVICE_SELENIUM)) {
151-
$manager->addVolume(self::VOLUME_MAGENTO_DEV, []);
152-
}
153-
154150
$mounts = $config->getMounts();
155151
$hasSelenium = $config->hasSelenium();
156152
$hasTmpMounts = $config->hasTmpMounts();
@@ -179,6 +175,10 @@ public function build(Config $config): Manager
179175
$volumes[self::VOLUME_MAGENTO] = $this->getVolumeConfig();
180176
}
181177

178+
if ($config->hasServiceEnabled(ServiceInterface::SERVICE_SELENIUM)) {
179+
$volumes[self::VOLUME_MAGENTO_DEV] = $this->getVolumeConfig('/dev');
180+
}
181+
182182
$manager->setVolumes($volumes);
183183

184184
$volumesBuild = $this->volumeResolver->normalize(array_merge(

src/Compose/ProductionBuilder/VolumeResolver.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class VolumeResolver
2121
*/
2222
public function getDefaultMagentoVolumes(bool $isReadOnly, bool $hasGenerated = true): array
2323
{
24-
$mode = $isReadOnly ? 'ro' : 'rw';
24+
$mode = $isReadOnly ? 'ro,delegated' : 'rw,delegated';
2525

2626
$volumes = [
2727
BuilderInterface::VOLUME_MAGENTO => [
@@ -69,15 +69,15 @@ public function getMagentoVolumes(
6969
$volumes[$volumeName] = [
7070
'path' => BuilderInterface::DIR_MAGENTO . '/' . $path,
7171
'volume' => '/' . $path,
72-
'mode' => 'rw'
72+
'mode' => 'rw,delegated'
7373
];
7474
}
7575

7676
if ($hasSelenium) {
7777
$volumes[BuilderInterface::VOLUME_MAGENTO_DEV] = [
7878
'path' => BuilderInterface::DIR_MAGENTO . '/dev',
7979
'volume' => '/dev',
80-
'mode' => 'delegated'
80+
'mode' => 'rw,delegated'
8181
];
8282
}
8383

@@ -92,7 +92,7 @@ public function getComposerVolumes(): array
9292
return [
9393
'~/.composer/cache' => [
9494
'path' => '/root/.composer/cache',
95-
'mode' => 'delegated'
95+
'mode' => 'rw,delegated'
9696
]
9797
];
9898
}
@@ -107,7 +107,7 @@ public function getMountVolumes(bool $hasTmpMounts): array
107107
return [
108108
BuilderInterface::VOLUME_DOCKER_MNT => [
109109
'path' => '/mnt',
110-
'mode' => 'delegated'
110+
'mode' => 'rw,delegated'
111111
],
112112
];
113113
}
@@ -130,7 +130,7 @@ public function normalize(array $volumes): array
130130
'%s:%s:%s',
131131
$name,
132132
$config['path'],
133-
$config['mode'] ?? 'rw'
133+
$config['mode'] ?? 'rw,delegated'
134134
);
135135
}
136136

src/Test/Integration/_files/cloud_base/docker-compose.exp.yml

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ services:
1111
ports:
1212
- '3306'
1313
volumes:
14-
- 'docker-mnt:/mnt:delegated'
14+
- 'docker-mnt:/mnt:rw,delegated'
1515
- 'mymagento-mariadb-conf:/etc/mysql/mariadb.conf.d'
1616
- 'mymagento-magento-db:/var/lib/mysql'
1717
- 'docker-entrypoint:/docker-entrypoint-initdb.d'
@@ -52,14 +52,14 @@ services:
5252
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
5353
extends: generic
5454
volumes:
55-
- 'magento:/app:ro'
56-
- 'magento-vendor:/app/vendor:ro'
57-
- 'magento-generated:/app/generated:ro'
58-
- 'magento-var:/app/var:rw'
59-
- 'magento-app-etc:/app/app/etc:rw'
60-
- 'magento-pub-media:/app/pub/media:rw'
61-
- 'magento-pub-static:/app/pub/static:rw'
62-
- 'docker-mnt:/mnt:delegated'
55+
- 'magento:/app:ro,delegated'
56+
- 'magento-vendor:/app/vendor:ro,delegated'
57+
- 'magento-generated:/app/generated:ro,delegated'
58+
- 'magento-var:/app/var:rw,delegated'
59+
- 'magento-app-etc:/app/app/etc:rw,delegated'
60+
- 'magento-pub-media:/app/pub/media:rw,delegated'
61+
- 'magento-pub-static:/app/pub/static:rw,delegated'
62+
- 'docker-mnt:/mnt:rw,delegated'
6363
networks:
6464
magento:
6565
aliases:
@@ -74,14 +74,14 @@ services:
7474
ports:
7575
- '80:80'
7676
volumes:
77-
- 'magento:/app:ro'
78-
- 'magento-vendor:/app/vendor:ro'
79-
- 'magento-generated:/app/generated:ro'
80-
- 'magento-var:/app/var:rw'
81-
- 'magento-app-etc:/app/app/etc:rw'
82-
- 'magento-pub-media:/app/pub/media:rw'
83-
- 'magento-pub-static:/app/pub/static:rw'
84-
- 'docker-mnt:/mnt:delegated'
77+
- 'magento:/app:ro,delegated'
78+
- 'magento-vendor:/app/vendor:ro,delegated'
79+
- 'magento-generated:/app/generated:ro,delegated'
80+
- 'magento-var:/app/var:rw,delegated'
81+
- 'magento-app-etc:/app/app/etc:rw,delegated'
82+
- 'magento-pub-media:/app/pub/media:rw,delegated'
83+
- 'magento-pub-static:/app/pub/static:rw,delegated'
84+
- 'docker-mnt:/mnt:rw,delegated'
8585
environment:
8686
- VIRTUAL_HOST=magento2.docker
8787
- VIRTUAL_PORT=80
@@ -129,10 +129,10 @@ services:
129129
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
130130
extends: generic
131131
volumes:
132-
- 'magento:/app:rw'
133-
- 'magento-vendor:/app/vendor:rw'
134-
- 'magento-generated:/app/generated:rw'
135-
- '~/.composer/cache:/root/.composer/cache:delegated'
132+
- 'magento:/app:rw,delegated'
133+
- 'magento-vendor:/app/vendor:rw,delegated'
134+
- 'magento-generated:/app/generated:rw,delegated'
135+
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
136136
networks:
137137
magento-build:
138138
aliases:
@@ -149,14 +149,14 @@ services:
149149
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
150150
extends: generic
151151
volumes:
152-
- 'magento:/app:ro'
153-
- 'magento-vendor:/app/vendor:ro'
154-
- 'magento-generated:/app/generated:ro'
155-
- 'magento-var:/app/var:rw'
156-
- 'magento-app-etc:/app/app/etc:rw'
157-
- 'magento-pub-media:/app/pub/media:rw'
158-
- 'magento-pub-static:/app/pub/static:rw'
159-
- 'docker-mnt:/mnt:delegated'
152+
- 'magento:/app:ro,delegated'
153+
- 'magento-vendor:/app/vendor:ro,delegated'
154+
- 'magento-generated:/app/generated:ro,delegated'
155+
- 'magento-var:/app/var:rw,delegated'
156+
- 'magento-app-etc:/app/app/etc:rw,delegated'
157+
- 'magento-pub-media:/app/pub/media:rw,delegated'
158+
- 'magento-pub-static:/app/pub/static:rw,delegated'
159+
- 'docker-mnt:/mnt:rw,delegated'
160160
networks:
161161
magento:
162162
aliases:

src/Test/Integration/_files/cloud_base_mftf/docker-compose.exp.yml

Lines changed: 65 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ services:
1111
ports:
1212
- '3306'
1313
volumes:
14-
- 'docker-mnt:/mnt:delegated'
14+
- 'docker-mnt:/mnt:rw,delegated'
1515
- 'mymagento-mariadb-conf:/etc/mysql/mariadb.conf.d'
1616
- 'mymagento-magento-db:/var/lib/mysql'
1717
- 'docker-entrypoint:/docker-entrypoint-initdb.d'
@@ -46,15 +46,15 @@ services:
4646
image: 'magento/magento-cloud-docker-php:7.3-fpm-1.1'
4747
extends: generic
4848
volumes:
49-
- 'magento:/app:ro'
50-
- 'magento-vendor:/app/vendor:ro'
51-
- 'magento-generated:/app/generated:ro'
52-
- 'magento-var:/app/var:rw'
53-
- 'magento-app-etc:/app/app/etc:rw'
54-
- 'magento-pub-media:/app/pub/media:rw'
55-
- 'magento-pub-static:/app/pub/static:rw'
56-
- 'magento-dev:/app/dev:delegated'
57-
- 'docker-mnt:/mnt:delegated'
49+
- 'magento:/app:ro,delegated'
50+
- 'magento-vendor:/app/vendor:ro,delegated'
51+
- 'magento-generated:/app/generated:ro,delegated'
52+
- 'magento-var:/app/var:rw,delegated'
53+
- 'magento-app-etc:/app/app/etc:rw,delegated'
54+
- 'magento-pub-media:/app/pub/media:rw,delegated'
55+
- 'magento-pub-static:/app/pub/static:rw,delegated'
56+
- 'magento-dev:/app/dev:rw,delegated'
57+
- 'docker-mnt:/mnt:rw,delegated'
5858
networks:
5959
magento:
6060
aliases:
@@ -69,15 +69,15 @@ services:
6969
ports:
7070
- '80:80'
7171
volumes:
72-
- 'magento:/app:ro'
73-
- 'magento-vendor:/app/vendor:ro'
74-
- 'magento-generated:/app/generated:ro'
75-
- 'magento-var:/app/var:rw'
76-
- 'magento-app-etc:/app/app/etc:rw'
77-
- 'magento-pub-media:/app/pub/media:rw'
78-
- 'magento-pub-static:/app/pub/static:rw'
79-
- 'magento-dev:/app/dev:delegated'
80-
- 'docker-mnt:/mnt:delegated'
72+
- 'magento:/app:ro,delegated'
73+
- 'magento-vendor:/app/vendor:ro,delegated'
74+
- 'magento-generated:/app/generated:ro,delegated'
75+
- 'magento-var:/app/var:rw,delegated'
76+
- 'magento-app-etc:/app/app/etc:rw,delegated'
77+
- 'magento-pub-media:/app/pub/media:rw,delegated'
78+
- 'magento-pub-static:/app/pub/static:rw,delegated'
79+
- 'magento-dev:/app/dev:rw,delegated'
80+
- 'docker-mnt:/mnt:rw,delegated'
8181
environment:
8282
- VIRTUAL_HOST=magento2.docker
8383
- VIRTUAL_PORT=80
@@ -132,16 +132,16 @@ services:
132132
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
133133
extends: generic
134134
volumes:
135-
- 'magento:/app:rw'
136-
- 'magento-vendor:/app/vendor:rw'
137-
- 'magento-generated:/app/generated:rw'
138-
- 'magento-var:/app/var:rw'
139-
- 'magento-app-etc:/app/app/etc:rw'
140-
- 'magento-pub-media:/app/pub/media:rw'
141-
- 'magento-pub-static:/app/pub/static:rw'
142-
- 'magento-dev:/app/dev:delegated'
143-
- 'docker-mnt:/mnt:delegated'
144-
- '~/.composer/cache:/root/.composer/cache:delegated'
135+
- 'magento:/app:rw,delegated'
136+
- 'magento-vendor:/app/vendor:rw,delegated'
137+
- 'magento-generated:/app/generated:rw,delegated'
138+
- 'magento-var:/app/var:rw,delegated'
139+
- 'magento-app-etc:/app/app/etc:rw,delegated'
140+
- 'magento-pub-media:/app/pub/media:rw,delegated'
141+
- 'magento-pub-static:/app/pub/static:rw,delegated'
142+
- 'magento-dev:/app/dev:rw,delegated'
143+
- 'docker-mnt:/mnt:rw,delegated'
144+
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
145145
networks:
146146
magento:
147147
aliases:
@@ -158,15 +158,15 @@ services:
158158
ports:
159159
- '9001:9001'
160160
volumes:
161-
- 'magento:/app:ro'
162-
- 'magento-vendor:/app/vendor:ro'
163-
- 'magento-generated:/app/generated:ro'
164-
- 'magento-var:/app/var:rw'
165-
- 'magento-app-etc:/app/app/etc:rw'
166-
- 'magento-pub-media:/app/pub/media:rw'
167-
- 'magento-pub-static:/app/pub/static:rw'
168-
- 'magento-dev:/app/dev:delegated'
169-
- 'docker-mnt:/mnt:delegated'
161+
- 'magento:/app:ro,delegated'
162+
- 'magento-vendor:/app/vendor:ro,delegated'
163+
- 'magento-generated:/app/generated:ro,delegated'
164+
- 'magento-var:/app/var:rw,delegated'
165+
- 'magento-app-etc:/app/app/etc:rw,delegated'
166+
- 'magento-pub-media:/app/pub/media:rw,delegated'
167+
- 'magento-pub-static:/app/pub/static:rw,delegated'
168+
- 'magento-dev:/app/dev:rw,delegated'
169+
- 'docker-mnt:/mnt:rw,delegated'
170170
environment:
171171
- 'PHP_EXTENSIONS=bcmath bz2 calendar exif gd gettext intl mysqli pcntl pdo_mysql soap sockets sysvmsg sysvsem sysvshm opcache zip redis xsl sodium'
172172
networks:
@@ -187,10 +187,10 @@ services:
187187
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
188188
extends: generic
189189
volumes:
190-
- 'magento:/app:rw'
191-
- 'magento-vendor:/app/vendor:rw'
192-
- 'magento-generated:/app/generated:rw'
193-
- '~/.composer/cache:/root/.composer/cache:delegated'
190+
- 'magento:/app:rw,delegated'
191+
- 'magento-vendor:/app/vendor:rw,delegated'
192+
- 'magento-generated:/app/generated:rw,delegated'
193+
- '~/.composer/cache:/root/.composer/cache:rw,delegated'
194194
networks:
195195
magento-build:
196196
aliases:
@@ -205,15 +205,15 @@ services:
205205
image: 'magento/magento-cloud-docker-php:7.3-cli-1.1'
206206
extends: generic
207207
volumes:
208-
- 'magento:/app:ro'
209-
- 'magento-vendor:/app/vendor:ro'
210-
- 'magento-generated:/app/generated:ro'
211-
- 'magento-var:/app/var:rw'
212-
- 'magento-app-etc:/app/app/etc:rw'
213-
- 'magento-pub-media:/app/pub/media:rw'
214-
- 'magento-pub-static:/app/pub/static:rw'
215-
- 'magento-dev:/app/dev:delegated'
216-
- 'docker-mnt:/mnt:delegated'
208+
- 'magento:/app:ro,delegated'
209+
- 'magento-vendor:/app/vendor:ro,delegated'
210+
- 'magento-generated:/app/generated:ro,delegated'
211+
- 'magento-var:/app/var:rw,delegated'
212+
- 'magento-app-etc:/app/app/etc:rw,delegated'
213+
- 'magento-pub-media:/app/pub/media:rw,delegated'
214+
- 'magento-pub-static:/app/pub/static:rw,delegated'
215+
- 'magento-dev:/app/dev:rw,delegated'
216+
- 'docker-mnt:/mnt:rw,delegated'
217217
networks:
218218
magento:
219219
aliases:
@@ -231,15 +231,15 @@ services:
231231
environment:
232232
CRONTAB: '* * * * * root cd /app && /usr/local/bin/php bin/magento cron:run >> /app/var/log/cron.log'
233233
volumes:
234-
- 'magento:/app:ro'
235-
- 'magento-vendor:/app/vendor:ro'
236-
- 'magento-generated:/app/generated:ro'
237-
- 'magento-var:/app/var:rw'
238-
- 'magento-app-etc:/app/app/etc:rw'
239-
- 'magento-pub-media:/app/pub/media:rw'
240-
- 'magento-pub-static:/app/pub/static:rw'
241-
- 'magento-dev:/app/dev:delegated'
242-
- 'docker-mnt:/mnt:delegated'
234+
- 'magento:/app:ro,delegated'
235+
- 'magento-vendor:/app/vendor:ro,delegated'
236+
- 'magento-generated:/app/generated:ro,delegated'
237+
- 'magento-var:/app/var:rw,delegated'
238+
- 'magento-app-etc:/app/app/etc:rw,delegated'
239+
- 'magento-pub-media:/app/pub/media:rw,delegated'
240+
- 'magento-pub-static:/app/pub/static:rw,delegated'
241+
- 'magento-dev:/app/dev:rw,delegated'
242+
- 'docker-mnt:/mnt:rw,delegated'
243243
networks:
244244
magento:
245245
aliases:
@@ -266,7 +266,11 @@ volumes:
266266
magento-app-etc: { }
267267
magento-pub-media: { }
268268
magento-pub-static: { }
269-
magento-dev: { }
269+
magento-dev:
270+
driver_opts:
271+
type: none
272+
device: '${PWD}/dev'
273+
o: bind
270274
mymagento-mariadb-conf:
271275
driver_opts:
272276
type: none

0 commit comments

Comments
 (0)