Fix critical MySQL container removal bug, add named volume for MySQL container, add missing PDO extensions

This commit is contained in:
Daniel Winning 2025-04-26 07:31:16 +01:00
parent 70d91a346b
commit bed48bf026
5 changed files with 18 additions and 8 deletions

View file

@ -9,4 +9,8 @@ services:
environment: environment:
MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD} MYSQL_ROOT_PASSWORD: ${ROOT_PASSWORD}
volumes: volumes:
- ./data/${PROJECT_NAME}/mysql:/var/lib/mysql:cached - mysql_data:/var/lib/mysql:cached
container_name: ${PROJECT_NAME}-mysql
volumes:
mysql_data:

View file

@ -0,0 +1 @@
RUN docker-php-ext-install mysqli pdo pdo_mysql > /dev/null 2>&1

View file

@ -25,6 +25,9 @@ class DockerComposeFileBuilder extends AbstractFileBuilder
{ {
$this->content = $this->config->getConfigFileContents('php.yaml'); $this->content = $this->config->getConfigFileContents('php.yaml');
if ($this->config->isServerEnabled($input)) {
$this->addNginxConfig();
}
if ($this->config->isDatabaseEnabled($input)) { if ($this->config->isDatabaseEnabled($input)) {
$databaseDriver = strtolower($this->config->getDatabaseDriver($input)); $databaseDriver = strtolower($this->config->getDatabaseDriver($input));
@ -37,10 +40,6 @@ class DockerComposeFileBuilder extends AbstractFileBuilder
} }
} }
if ($this->config->isServerEnabled($input)) {
$this->addNginxConfig();
}
return $this; return $this;
} }

View file

@ -36,13 +36,18 @@ class PHPDockerFileBuilder extends AbstractFileBuilder
$this->addNewLine(); $this->addNewLine();
$this->content .= $this->config->getConfigFileContents('php-fpm/Sqlite.Dockerfile'); $this->content .= $this->config->getConfigFileContents('php-fpm/Sqlite.Dockerfile');
} }
if ($this->config->getDatabaseDriver($input) ==='mysql') {
$this->addNewLine();
$this->content .= $this->config->getConfigFileContents('php-fpm/MySQL.Dockerfile');
}
} }
$this->content = str_replace('${NODE_VERSION}', (string) $this->config->getNodeVersion($input), $this->content); $this->content = str_replace('${NODE_VERSION}', (string) $this->config->getNodeVersion($input), $this->content);
if ($this->config->isXdebugEnabled($input)) { if ($this->config->isXdebugEnabled($input)) {
$this->addNewLine(); $this->addNewLine();
$this->content .= $this->config->getConfigFileContents('php-fpm/Xdebug.Dockerfile'); $this->content .= $this->config->getConfigFileContents('php-fpm/XDebug.Dockerfile');
file_put_contents( file_put_contents(
$this->config->getDataDirectory() . '/php-fpm/xdebug.ini', $this->config->getDataDirectory() . '/php-fpm/xdebug.ini',
$this->config->getConfigFileContents('php-fpm/xdebug.ini') $this->config->getConfigFileContents('php-fpm/xdebug.ini')

View file

@ -29,7 +29,8 @@ class DestroyCommand extends AbstractSpinnerCommand
return Command::FAILURE; return Command::FAILURE;
} }
$this->config = new Config($input->getArgument('name')); $projectName = $input->getArgument('name');
$this->config = new Config($projectName);
if (!file_exists($this->config->getDataDirectory())) { if (!file_exists($this->config->getDataDirectory())) {
$this->style->error('No project found with the provided name.'); $this->style->error('No project found with the provided name.');
@ -38,7 +39,7 @@ class DestroyCommand extends AbstractSpinnerCommand
} }
try { try {
passthru($this->buildDockerComposeCommand('down', false, false)); passthru($this->buildDockerComposeCommand('down -v', false, false));
recursive_rmdir($this->config->getDataDirectory()); recursive_rmdir($this->config->getDataDirectory());
} catch (\Exception $exception) { } catch (\Exception $exception) {
$this->style->error('An error occurred while destroying the project: ' . $exception->getMessage()); $this->style->error('An error occurred while destroying the project: ' . $exception->getMessage());