Skip to content

Commit 6faaebd

Browse files
MAGECLOUD-3366: [Docker] DB dump can't be saved using db-dump (#446)
1 parent c29c546 commit 6faaebd

File tree

4 files changed

+65
-32
lines changed

4 files changed

+65
-32
lines changed

composer.json

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,10 @@
7979
"dist/docker/mnt",
8080
"docker/mnt"
8181
],
82+
[
83+
"dist/docker/tmp",
84+
"docker/tmp"
85+
],
8286
[
8387
"dist/docker/mysql",
8488
"docker/mysql"

dist/docker/tmp/.gitignore

Whitespace-only changes.

src/Command/Docker/Build.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
use Magento\MagentoCloud\Filesystem\Driver\File;
1717
use Magento\MagentoCloud\Filesystem\FileSystemException;
1818
use Symfony\Component\Console\Command\Command;
19+
use Symfony\Component\Console\Input\ArrayInput;
1920
use Symfony\Component\Console\Input\InputInterface;
2021
use Symfony\Component\Console\Input\InputOption;
2122
use Symfony\Component\Console\Output\OutputInterface;
@@ -161,7 +162,7 @@ public function execute(InputInterface $input, OutputInterface $output)
161162

162163
$this->getApplication()
163164
->find(ConfigConvert::NAME)
164-
->run($input, $output);
165+
->run(new ArrayInput([]), $output);
165166

166167
$output->writeln('<info>Configuration was built.</info>');
167168
}

src/Docker/DevBuilder.php

Lines changed: 59 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,7 @@ public function build(Repository $config): array
130130
[
131131
'ports' => [9000],
132132
'depends_on' => ['db'],
133-
'volumes_from' => ['appdata'],
134-
'volumes' => [$this->getMagentoVolume(true)],
133+
'volumes' => $this->getMagentoVolumes(true),
135134
'env_file' => [
136135
'./docker/global.env',
137136
'./docker/config.env',
@@ -145,33 +144,33 @@ public function build(Repository $config): array
145144
$config->get(self::NGINX_VERSION, self::DEFAULT_NGINX_VERSION),
146145
[
147146
'depends_on' => ['fpm', 'db'],
148-
'volumes_from' => ['appdata'],
149-
'volumes' => [
150-
$this->getMagentoVolume(true),
151-
],
147+
'volumes' => $this->getMagentoVolumes(true),
152148
'env_file' => [
153149
'./docker/global.env',
154150
'./docker/config.env',
155151
],
156152
]
157153
);
158154
$services['cron'] = $this->getCronCliService($phpVersion, true, $cliDepends, 'cron.magento2.docker');
159-
$services['appdata'] = [
160-
'image' => 'tianon/true',
161-
'volumes' => [
162-
'./docker/mnt:/mnt',
163-
self::DIR_MAGENTO . '/var',
164-
self::DIR_MAGENTO . '/app/etc',
165-
self::DIR_MAGENTO . '/pub/static',
166-
self::DIR_MAGENTO . '/pub/media',
167-
self::DIR_MAGENTO . '/vendor',
168-
self::DIR_MAGENTO . '/generated'
169-
],
155+
156+
$volumeConfig = [
157+
'driver_opts' => [
158+
'type' => 'tmpfs',
159+
'device' => 'tmpfs'
160+
]
170161
];
171162

172163
return [
173-
'version' => '2',
164+
'version' => '3',
174165
'services' => $services,
166+
'volumes' => [
167+
'magento-vendor' => $volumeConfig,
168+
'magento-generated' => $volumeConfig,
169+
'magento-var' => $volumeConfig,
170+
'magento-etc' => $volumeConfig,
171+
'magento-static' => $volumeConfig,
172+
'magento-media' => $volumeConfig,
173+
]
175174
];
176175
}
177176

@@ -185,13 +184,46 @@ public function getConfigPath(): string
185184

186185
/**
187186
* @param bool $isReadOnly
188-
* @return string
187+
* @return array
189188
*/
190-
private function getMagentoVolume(bool $isReadOnly): string
189+
private function getMagentoVolumes(bool $isReadOnly): array
191190
{
192-
$volume = '.:' . self::DIR_MAGENTO;
191+
$flag = $isReadOnly ? ':ro' : ':rw';
192+
193+
return [
194+
'./:' . self::DIR_MAGENTO . $flag,
195+
'magento-vendor:' . self::DIR_MAGENTO . '/vendor' . $flag,
196+
'magento-generated:' . self::DIR_MAGENTO . '/generated' . $flag,
197+
'magento-var:' . self::DIR_MAGENTO . '/var:rw',
198+
'magento-etc:' . self::DIR_MAGENTO . '/app/etc:rw',
199+
'magento-static:' . self::DIR_MAGENTO . '/pub/static:rw',
200+
'magento-media:' . self::DIR_MAGENTO . '/pub/media:rw',
201+
];
202+
}
203+
204+
/***
205+
* @return array
206+
*/
207+
private function getComposerVolumes(): array
208+
{
209+
$composeCacheDirectory = file_exists(getenv('HOME') . '/.cache/composer')
210+
? '~/.cache/composer'
211+
: '~/.composer/cache';
193212

194-
return $isReadOnly ? $volume . ':ro' : $volume . ':rw';
213+
return [
214+
$composeCacheDirectory . ':/root/.composer/cache',
215+
];
216+
}
217+
218+
/**
219+
* @return array
220+
*/
221+
private function getSharedVolumes(): array
222+
{
223+
return [
224+
'./docker/mnt:/mnt',
225+
'./docker/tmp:/tmp'
226+
];
195227
}
196228

197229
/**
@@ -244,21 +276,17 @@ private function getCliService(
244276
array $depends,
245277
string $hostname
246278
): array {
247-
$composeCacheDirectory = file_exists(getenv('HOME') . '/.cache/composer')
248-
? '~/.cache/composer'
249-
: '~/.composer/cache';
250-
251279
$config = $this->serviceFactory->create(
252280
ServiceFactory::SERVICE_CLI,
253281
$version,
254282
[
255283
'hostname' => $hostname,
256284
'depends_on' => $depends,
257-
'volumes' => [
258-
$composeCacheDirectory . ':/root/.composer/cache',
259-
$this->getMagentoVolume($isReadOnly),
260-
],
261-
'volumes_from' => ['appdata'],
285+
'volumes' => array_merge(
286+
$this->getMagentoVolumes($isReadOnly),
287+
$this->getComposerVolumes(),
288+
$this->getSharedVolumes()
289+
),
262290
'env_file' => [
263291
'./docker/global.env',
264292
'./docker/config.env',

0 commit comments

Comments
 (0)