Skip to content

Commit 6d1c562

Browse files
Merge pull request #212 from magento/1.1
Forward-port 1.1 branch
2 parents 7df89c1 + a80027b commit 6d1c562

File tree

10 files changed

+160
-140
lines changed

10 files changed

+160
-140
lines changed

src/Command/BuildCompose.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,12 @@ protected function configure(): void
102102
InputOption::VALUE_REQUIRED,
103103
'DB version'
104104
)->addOption(
105+
Source\CliSource::OPTION_DB_IMAGE,
106+
null,
107+
InputOption::VALUE_REQUIRED,
108+
'DB image'
109+
)
110+
->addOption(
105111
Source\CliSource::OPTION_EXPOSE_DB_PORT,
106112
null,
107113
InputOption::VALUE_REQUIRED,

src/Compose/ProductionBuilder.php

Lines changed: 12 additions & 11 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(
@@ -205,16 +205,16 @@ public function build(Config $config): Manager
205205
$this->getVolumeConfig('/.docker/mysql/mariadb.conf.d')
206206
);
207207

208-
$this->addDbService(self::SERVICE_DB, $manager, $dbVersion, $volumesMount, $config);
208+
$this->addDbService($manager, $config, self::SERVICE_DB, $dbVersion, $volumesMount);
209209

210210
if ($config->hasServiceEnabled(ServiceInterface::SERVICE_DB_QUOTE)) {
211211
$cliDepends = array_merge($cliDepends, [self::SERVICE_DB_QUOTE => ['condition' => 'service_started']]);
212-
$this->addDbService(self::SERVICE_DB_QUOTE, $manager, $dbVersion, $volumesMount, $config);
212+
$this->addDbService($manager, $config, self::SERVICE_DB_QUOTE, $dbVersion, $volumesMount);
213213
}
214214

215215
if ($config->hasServiceEnabled(ServiceInterface::SERVICE_DB_SALES)) {
216216
$cliDepends = array_merge($cliDepends, [self::SERVICE_DB_SALES => ['condition' => 'service_started']]);
217-
$this->addDbService(self::SERVICE_DB_SALES, $manager, $dbVersion, $volumesMount, $config);
217+
$this->addDbService($manager, $config, self::SERVICE_DB_SALES, $dbVersion, $volumesMount);
218218
}
219219

220220
$esEnvVars = $config->get(SourceInterface::SERVICES_ES_VARS);
@@ -463,11 +463,11 @@ public function getPath(): string
463463
* @throws GenericException
464464
*/
465465
private function addDbService(
466-
string $service,
467466
Manager $manager,
467+
Config $config,
468+
string $service,
468469
string $version,
469-
array $mounts,
470-
Config $config
470+
array $mounts
471471
): void {
472472
$volumePrefix = $config->getNameWithPrefix();
473473
$mounts[] = $volumePrefix . self::VOLUME_MARIADB_CONF . ':/etc/mysql/mariadb.conf.d';
@@ -548,7 +548,8 @@ private function addDbService(
548548
$this->serviceFactory->create(
549549
$serviceType,
550550
$version,
551-
$dbConfig
551+
$dbConfig,
552+
$config->getServiceImage(ServiceInterface::SERVICE_DB)
552553
),
553554
[self::NETWORK_MAGENTO],
554555
[]

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/Config/Source/CliSource.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class CliSource implements SourceInterface
2121
public const OPTION_PHP = 'php';
2222
public const OPTION_NGINX = 'nginx';
2323
public const OPTION_DB = 'db';
24+
public const OPTION_DB_IMAGE = 'db-image';
2425
public const OPTION_EXPOSE_DB_PORT = 'expose-db-port';
2526
public const OPTION_EXPOSE_DB_QUOTE_PORT = 'expose-db-quote-port';
2627
public const OPTION_EXPOSE_DB_SALES_PORT = 'expose-db-sales-port';
@@ -166,6 +167,12 @@ public function read(): Repository
166167
]);
167168
}
168169

170+
if ($dbImage = $this->input->getOption(self::OPTION_DB_IMAGE)) {
171+
$repository->set([
172+
self::SERVICES_DB_IMAGE => $dbImage
173+
]);
174+
}
175+
169176
if ($this->input->getOption(self::OPTION_NO_TMP_MOUNTS)) {
170177
$repository->set(self::SYSTEM_TMP_MOUNTS, false);
171178
}

src/Config/Source/CloudSource.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,9 @@ private function addRelationships(Repository $repository, array $relationships):
174174
continue;
175175
}
176176

177-
if ($repository->has(self::SERVICES . '.' . $service) && $service != ServiceInterface::SERVICE_DB) {
177+
if ($service !== ServiceInterface::SERVICE_DB
178+
&& $repository->has(self::SERVICES . '.' . $service)
179+
) {
178180
throw new SourceException(sprintf(
179181
'Only one instance of service "%s" supported',
180182
$service
@@ -185,9 +187,7 @@ private function addRelationships(Repository $repository, array $relationships):
185187
$repository->set([
186188
self::SERVICES . '.' . $service . '.enabled' => true,
187189
self::SERVICES . '.' . $service . '.version' => $version,
188-
self::SERVICES . '.' . $service . '.image' => $this->serviceFactory->getDefaultImage(
189-
$service
190-
)
190+
self::SERVICES . '.' . $service . '.image' => $this->serviceFactory->getDefaultImage($service)
191191
]);
192192
} catch (ConfigurationMismatchException $exception) {
193193
throw new SourceException($exception->getMessage(), $exception->getCode(), $exception);

src/Config/Source/SourceInterface.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ interface SourceInterface
4848
* DB
4949
*/
5050
public const SERVICES_DB = self::SERVICES . '.' . ServiceInterface::SERVICE_DB;
51+
public const SERVICES_DB_IMAGE = self::SERVICES_DB . '.image';
5152

5253
/**
5354
* DB quote

src/Test/Integration/BuildCustomComposeTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ public function buildDataProvider(): array
9797
],
9898
'mysql' => [
9999
'version' => '10.0',
100+
'image' => 'mariadb',
100101
'enabled' => true,
101102
],
102103
],

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:

0 commit comments

Comments
 (0)