From bfdcd13f80beb7ba42a49f5a085ade45b3fe8c65 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 14:11:45 +0530 Subject: [PATCH 01/17] add postges installtion command --- .env | 1 + app/init/registers.php | 28 ++++++++++++++++++---- app/views/install/compose.phtml | 24 +++++++++++++++++-- composer.lock | 12 +++++----- src/Appwrite/Platform/Tasks/Install.php | 31 +++++++++++++++++++++---- src/Appwrite/Platform/Tasks/Upgrade.php | 7 +++--- 6 files changed, 83 insertions(+), 20 deletions(-) diff --git a/.env b/.env index 89b76cb740..35ad688f4a 100644 --- a/.env +++ b/.env @@ -29,6 +29,7 @@ _APP_REDIS_HOST=redis _APP_REDIS_PORT=6379 _APP_REDIS_PASS= _APP_REDIS_USER= +_APP_DB_SCHEME=postgresql _APP_DB_HOST=mariadb _APP_DB_PORT=3306 _APP_DB_SCHEMA=appwrite diff --git a/app/init/registers.php b/app/init/registers.php index 1adaaf35ce..020335abce 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -14,6 +14,7 @@ use Utopia\CLI\Console; use Utopia\Config\Config; use Utopia\Database\Adapter\MariaDB; use Utopia\Database\Adapter\MySQL; +use Utopia\Database\Adapter\Postgres; use Utopia\Database\Adapter\SQL; use Utopia\Database\PDO; use Utopia\Domains\Validator\PublicDomain; @@ -120,19 +121,19 @@ $register->set('pools', function () { 'type' => 'database', 'dsns' => $fallbackForDB, 'multiple' => false, - 'schemes' => ['mariadb', 'mysql'], + 'schemes' => ['mariadb', 'mysql','postgresql'], ], 'database' => [ 'type' => 'database', 'dsns' => $fallbackForDB, 'multiple' => true, - 'schemes' => ['mariadb', 'mysql'], + 'schemes' => ['mariadb', 'mysql','postgresql'], ], 'logs' => [ 'type' => 'database', 'dsns' => System::getEnv('_APP_CONNECTIONS_DB_LOGS', $fallbackForDB), 'multiple' => false, - 'schemes' => ['mariadb', 'mysql'], + 'schemes' => ['mariadb', 'mysql','postgresql'], ], 'publisher' => [ 'type' => 'publisher', @@ -225,6 +226,17 @@ $register->set('pools', function () { )); }); }, + 'postgresql' => function () use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnDatabase) { + return new PDOProxy(function () use ($dsnHost, $dsnPort, $dsnUser, $dsnPass, $dsnDatabase) { + return new PDO("pgsql:host={$dsnHost};port={$dsnPort};dbname={$dsnDatabase}", $dsnUser, $dsnPass, array( + \PDO::ATTR_TIMEOUT => 3, // Seconds + \PDO::ATTR_PERSISTENT => false, + \PDO::ATTR_DEFAULT_FETCH_MODE => \PDO::FETCH_ASSOC, + \PDO::ATTR_EMULATE_PREPARES => true, + \PDO::ATTR_STRINGIFY_FETCHES => true + )); + }); + }, 'redis' => function () use ($dsnHost, $dsnPort, $dsnPass) { $redis = new \Redis(); @$redis->pconnect($dsnHost, (int)$dsnPort); @@ -245,6 +257,7 @@ $register->set('pools', function () { $adapter = match ($dsn->getScheme()) { 'mariadb' => new MariaDB($resource()), 'mysql' => new MySQL($resource()), + 'postgresql' => new Postgres($resource), default => null }; @@ -286,10 +299,15 @@ $register->set('db', function () { $dbPort = System::getEnv('_APP_DB_PORT', ''); $dbUser = System::getEnv('_APP_DB_USER', ''); $dbPass = System::getEnv('_APP_DB_PASS', ''); - $dbScheme = System::getEnv('_APP_DB_SCHEMA', ''); + $dbSchema = System::getEnv('_APP_DB_SCHEMA', ''); + $dbScheme = System::getEnv('_APP_DB_SCHEME', 'mariadb'); + $dsn = ($dbScheme === 'postgresql') + ? "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}" + : "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4"; + return new PDO( - "mysql:host={$dbHost};port={$dbPort};dbname={$dbScheme};charset=utf8mb4", + $dsn, $dbUser, $dbPass, SQL::getPDOAttributes() diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 816f88299b..88cffdcc8b 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -66,8 +66,12 @@ $image = $this->getParam('image', ''); - appwrite-certificates:/storage/certificates:rw - appwrite-functions:/storage/functions:rw depends_on: - - mariadb - redis + getParam('_APP_DB_SCHEME', 'mariadb') === 'mariadb'): ?> + - mariadb + + - postgres + # - clamav environment: - _APP_ENV @@ -100,6 +104,7 @@ $image = $this->getParam('image', ''); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_SCHEME - _APP_SMTP_HOST - _APP_SMTP_PORT - _APP_SMTP_SECURE @@ -211,8 +216,8 @@ $image = $this->getParam('image', ''); networks: - appwrite depends_on: - - mariadb - redis + - mariadb environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -897,6 +902,20 @@ $image = $this->getParam('image', ''); - MARIADB_AUTO_UPGRADE=1 command: 'mysqld --innodb-flush-method=fsync' + postgres: + image: postgres:15-alpine + container_name: appwrite-postgres + <<: *x-logging + restart: unless-stopped + networks: + - appwrite + volumes: + - appwrite-postgres:/var/lib/postgresql/data:rw + environment: + - POSTGRES_DB=${_APP_DB_SCHEMA} + - POSTGRES_USER=${_APP_DB_USER} + - POSTGRES_PASSWORD=${_APP_DB_PASS} + redis: image: redis:7.2.4-alpine container_name: appwrite-redis @@ -938,3 +957,4 @@ volumes: appwrite-functions: appwrite-builds: appwrite-config: + appwrite-postgres: diff --git a/composer.lock b/composer.lock index e108e45171..a26a3751dd 100644 --- a/composer.lock +++ b/composer.lock @@ -3499,16 +3499,16 @@ }, { "name": "utopia-php/database", - "version": "0.69.2", + "version": "0.69.3", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "60591ab073bb80bb9843338754b679bb8169e4ed" + "reference": "1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/60591ab073bb80bb9843338754b679bb8169e4ed", - "reference": "60591ab073bb80bb9843338754b679bb8169e4ed", + "url": "https://api.github.com/repos/utopia-php/database/zipball/1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7", + "reference": "1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7", "shasum": "" }, "require": { @@ -3549,9 +3549,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.69.2" + "source": "https://github.com/utopia-php/database/tree/0.69.3" }, - "time": "2025-05-14T07:51:44+00:00" + "time": "2025-05-16T05:54:54+00:00" }, { "name": "utopia-php/domains", diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 4abd267684..c157374893 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -31,16 +31,25 @@ class Install extends Action ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart)); + ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) + ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); } - public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart): void + public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void { $config = Config::getParam('variables'); $defaultHTTPPort = '80'; $defaultHTTPSPort = '443'; /** @var array> $vars array whre key is variable name and value is variable */ $vars = []; + $vars['_APP_DB_SCHEME'] = [ + 'name' => '_APP_DB_SCHEME', + 'default' => $database, + 'required' => false, + 'filter' => '', + 'overwrite' => true, + 'question' => 'Choose your database (mariadb|postgresql)', + ]; foreach ($config as $category) { foreach ($category['variables'] ?? [] as $var) { @@ -171,6 +180,19 @@ class Install extends Action continue; } + if ($var['name'] === '_APP_DB_SCHEME') { + $input[$var['name']] = Console::confirm('Choose your database (mariadb|postgresql): (default: ' . $var['default'] . ')'); + if (empty($input[$var['name']])) { + $input[$var['name']] = $var['default']; + } + if (!in_array($input[$var['name']], ['mariadb', 'postgresql'])) { + Console::error('Invalid database choice. Please choose either mariadb or postgresql.'); + Console::exit(1); + } + $database = $input[$var['name']]; + continue; + } + $input[$var['name']] = Console::confirm($var['question'] . ' (default: \'' . $var['default'] . '\')'); if (empty($input[$var['name']])) { @@ -196,8 +218,9 @@ class Install extends Action ->setParam('httpsPort', $httpsPort) ->setParam('version', APP_VERSION_STABLE) ->setParam('organization', $organization) - ->setParam('image', $image); - + ->setParam('image', $image) + ->setParam('database',$database); + $input['_APP_DB_SCHEME'] = $database; $templateForEnv->setParam('vars', $input); if (!file_put_contents($this->path . '/docker-compose.yml', $templateForCompose->render(false))) { diff --git a/src/Appwrite/Platform/Tasks/Upgrade.php b/src/Appwrite/Platform/Tasks/Upgrade.php index 341ce42fc4..5f4b625462 100644 --- a/src/Appwrite/Platform/Tasks/Upgrade.php +++ b/src/Appwrite/Platform/Tasks/Upgrade.php @@ -23,10 +23,11 @@ class Upgrade extends Install ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart)); + ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) + ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); } - public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart): void + public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void { // Check for previous installation $data = @file_get_contents($this->path . '/docker-compose.yml'); @@ -39,6 +40,6 @@ class Upgrade extends Install Console::log(' └── docker-compose.yml'); Console::exit(1); } - parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart); + parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database); } } From 083e490cc20759f7d33c04d167d91d455ad0a811 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 16:19:20 +0530 Subject: [PATCH 02/17] updated compose file and installation script --- .env | 2 +- app/views/install/compose.phtml | 48 ++++++++++++------------- src/Appwrite/Platform/Tasks/Install.php | 44 ++++++++++------------- 3 files changed, 43 insertions(+), 51 deletions(-) diff --git a/.env b/.env index 35ad688f4a..e79f745ddc 100644 --- a/.env +++ b/.env @@ -29,7 +29,7 @@ _APP_REDIS_HOST=redis _APP_REDIS_PORT=6379 _APP_REDIS_PASS= _APP_REDIS_USER= -_APP_DB_SCHEME=postgresql +_APP_DB_SCHEME=mariadb _APP_DB_HOST=mariadb _APP_DB_PORT=3306 _APP_DB_SCHEMA=appwrite diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 88cffdcc8b..bf27311df5 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -11,6 +11,7 @@ $httpsPort = $this->getParam('httpsPort', ''); $version = $this->getParam('version', ''); $organization = $this->getParam('organization', ''); $image = $this->getParam('image', ''); +$dbService = $this->getParam('database', 'mariadb') === 'mariadb' ? 'mariadb' : 'postgresql'; ?>services: traefik: image: traefik:2.11 @@ -67,11 +68,7 @@ $image = $this->getParam('image', ''); - appwrite-functions:/storage/functions:rw depends_on: - redis - getParam('_APP_DB_SCHEME', 'mariadb') === 'mariadb'): ?> - - mariadb - - - postgres - + - # - clamav environment: - _APP_ENV @@ -217,7 +214,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -246,7 +243,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -272,7 +269,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -300,7 +297,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -362,7 +359,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -388,7 +385,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - volumes: - appwrite-functions:/storage/functions:rw - appwrite-builds:/storage/builds:rw @@ -452,7 +449,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw @@ -485,7 +482,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - - openruntimes-executor environment: - _APP_ENV @@ -523,6 +520,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -559,6 +557,7 @@ $image = $this->getParam('image', ''); - appwrite-uploads:/storage/uploads:rw depends_on: - redis + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -607,7 +606,7 @@ $image = $this->getParam('image', ''); networks: - appwrite depends_on: - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -638,6 +637,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -675,7 +675,7 @@ $image = $this->getParam('image', ''); - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -704,7 +704,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -732,7 +732,7 @@ $image = $this->getParam('image', ''); - appwrite depends_on: - redis - - mariadb + - environment: - _APP_ENV - _APP_WORKER_PER_CORE @@ -759,7 +759,7 @@ $image = $this->getParam('image', ''); networks: - appwrite depends_on: - - mariadb + - - redis environment: - _APP_ENV @@ -784,7 +784,7 @@ $image = $this->getParam('image', ''); networks: - appwrite depends_on: - - mariadb + - - redis environment: - _APP_ENV @@ -809,7 +809,7 @@ $image = $this->getParam('image', ''); networks: - appwrite depends_on: - - mariadb + - - redis environment: - _APP_ENV @@ -902,15 +902,15 @@ $image = $this->getParam('image', ''); - MARIADB_AUTO_UPGRADE=1 command: 'mysqld --innodb-flush-method=fsync' - postgres: + postgresql: image: postgres:15-alpine - container_name: appwrite-postgres + container_name: appwrite-postgresql <<: *x-logging restart: unless-stopped networks: - appwrite volumes: - - appwrite-postgres:/var/lib/postgresql/data:rw + - appwrite-postgresql:/var/lib/postgresql/data:rw environment: - POSTGRES_DB=${_APP_DB_SCHEMA} - POSTGRES_USER=${_APP_DB_USER} @@ -957,4 +957,4 @@ volumes: appwrite-functions: appwrite-builds: appwrite-config: - appwrite-postgres: + appwrite-postgresql: diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index c157374893..bc1ee40362 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -31,7 +31,7 @@ class Install extends Action ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) + ->param('database', '', new Text(0), 'Database to use (mariadb|postgresql)', true) ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); } @@ -45,7 +45,7 @@ class Install extends Action $vars['_APP_DB_SCHEME'] = [ 'name' => '_APP_DB_SCHEME', 'default' => $database, - 'required' => false, + 'required' => true, 'filter' => '', 'overwrite' => true, 'question' => 'Choose your database (mariadb|postgresql)', @@ -59,13 +59,6 @@ class Install extends Action Console::success('Starting Appwrite installation...'); - // Create directory with write permissions - if (!\file_exists(\dirname($this->path))) { - if (!@\mkdir(\dirname($this->path), 0755, true)) { - Console::error('Can\'t create directory ' . \dirname($this->path)); - Console::exit(1); - } - } $data = @file_get_contents($this->path . '/docker-compose.yml'); @@ -146,6 +139,18 @@ class Install extends Action } } + // if ($interactive == 'Y' && Console::isInteractive()) { + // $dbChoice = Console::confirm('Choose your database (mariadb|postgresql): (default: ' . $database . ')'); + // if (!empty($dbChoice)) { + // $database = $dbChoice; + // if (!in_array($database, ['mariadb', 'postgresql'])) { + // Console::error('Invalid database choice. Please choose either mariadb or postgresql.'); + // Console::exit(1); + // } + // } + // $vars['_APP_DB_SCHEME']['default'] = $database; + // } + if (empty($httpPort)) { $httpPort = Console::confirm('Choose your server HTTP port: (default: ' . $defaultHTTPPort . ')'); $httpPort = ($httpPort) ? $httpPort : $defaultHTTPPort; @@ -180,19 +185,6 @@ class Install extends Action continue; } - if ($var['name'] === '_APP_DB_SCHEME') { - $input[$var['name']] = Console::confirm('Choose your database (mariadb|postgresql): (default: ' . $var['default'] . ')'); - if (empty($input[$var['name']])) { - $input[$var['name']] = $var['default']; - } - if (!in_array($input[$var['name']], ['mariadb', 'postgresql'])) { - Console::error('Invalid database choice. Please choose either mariadb or postgresql.'); - Console::exit(1); - } - $database = $input[$var['name']]; - continue; - } - $input[$var['name']] = Console::confirm($var['question'] . ' (default: \'' . $var['default'] . '\')'); if (empty($input[$var['name']])) { @@ -209,18 +201,18 @@ class Install extends Action } } } + $database = $input['_APP_DB_SCHEME']; $templateForCompose = new View(__DIR__ . '/../../../../app/views/install/compose.phtml'); $templateForEnv = new View(__DIR__ . '/../../../../app/views/install/env.phtml'); - $templateForCompose ->setParam('httpPort', $httpPort) ->setParam('httpsPort', $httpsPort) ->setParam('version', APP_VERSION_STABLE) ->setParam('organization', $organization) ->setParam('image', $image) - ->setParam('database',$database); - $input['_APP_DB_SCHEME'] = $database; + ->setParam('database', $database); + $templateForEnv->setParam('vars', $input); if (!file_put_contents($this->path . '/docker-compose.yml', $templateForCompose->render(false))) { @@ -261,4 +253,4 @@ class Install extends Action Console::success($message); } } -} +} \ No newline at end of file From f846e417fcb00896caa0f87d45617840b4cd8468 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 16:19:37 +0530 Subject: [PATCH 03/17] linting --- src/Appwrite/Platform/Tasks/Install.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index bc1ee40362..43c5289f02 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -253,4 +253,4 @@ class Install extends Action Console::success($message); } } -} \ No newline at end of file +} From 5f7afa25ce4fa92a8ecd79ad0be87266b6bac2ee Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 17:01:18 +0530 Subject: [PATCH 04/17] added conditonal for .env for mariadb and psotgres --- src/Appwrite/Platform/Tasks/Install.php | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 43c5289f02..d18f6b7c88 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -31,7 +31,7 @@ class Install extends Action ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->param('database', '', new Text(0), 'Database to use (mariadb|postgresql)', true) + ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); } @@ -139,17 +139,6 @@ class Install extends Action } } - // if ($interactive == 'Y' && Console::isInteractive()) { - // $dbChoice = Console::confirm('Choose your database (mariadb|postgresql): (default: ' . $database . ')'); - // if (!empty($dbChoice)) { - // $database = $dbChoice; - // if (!in_array($database, ['mariadb', 'postgresql'])) { - // Console::error('Invalid database choice. Please choose either mariadb or postgresql.'); - // Console::exit(1); - // } - // } - // $vars['_APP_DB_SCHEME']['default'] = $database; - // } if (empty($httpPort)) { $httpPort = Console::confirm('Choose your server HTTP port: (default: ' . $defaultHTTPPort . ')'); @@ -202,6 +191,13 @@ class Install extends Action } } $database = $input['_APP_DB_SCHEME']; + if ($database === 'postgresql') { + $input['_APP_DB_HOST'] = 'postgresql'; + $input['_APP_DB_PORT'] = 5432; + } elseif ($database === 'mariadb') { + $input['_APP_DB_HOST'] = 'mariadb'; + $input['_APP_DB_PORT'] = 3306; + } $templateForCompose = new View(__DIR__ . '/../../../../app/views/install/compose.phtml'); $templateForEnv = new View(__DIR__ . '/../../../../app/views/install/env.phtml'); From 26c3248375115f40eb841f065bfa68e89029e33b Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 17:53:44 +0530 Subject: [PATCH 05/17] used env var in the registers for the pool --- app/init/registers.php | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/init/registers.php b/app/init/registers.php index 020335abce..61e69d1952 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -99,9 +99,10 @@ $register->set('logger', function () { $register->set('pools', function () { $group = new Group(); + $dbScheme = System::getEnv('_APP_DB_SCHEME', 'mariadb'); $fallbackForDB = 'db_main=' . AppwriteURL::unparse([ - 'scheme' => 'mariadb', + 'scheme' => $dbScheme, 'host' => System::getEnv('_APP_DB_HOST', 'mariadb'), 'port' => System::getEnv('_APP_DB_PORT', '3306'), 'user' => System::getEnv('_APP_DB_USER', ''), From 9f22ab4ef5c14660ae78c787ae35296533403c85 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 18:07:17 +0530 Subject: [PATCH 06/17] added the callable resource in the pg adapter --- app/init/registers.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/init/registers.php b/app/init/registers.php index 61e69d1952..a7632888c8 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -258,7 +258,7 @@ $register->set('pools', function () { $adapter = match ($dsn->getScheme()) { 'mariadb' => new MariaDB($resource()), 'mysql' => new MySQL($resource()), - 'postgresql' => new Postgres($resource), + 'postgresql' => new Postgres($resource()), default => null }; From 2460f0cb368b131fac4972c665511f8edca56300 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 19:50:42 +0530 Subject: [PATCH 07/17] updated composer lock --- composer.lock | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/composer.lock b/composer.lock index a26a3751dd..4ba9694eaf 100644 --- a/composer.lock +++ b/composer.lock @@ -3499,16 +3499,16 @@ }, { "name": "utopia-php/database", - "version": "0.69.3", + "version": "0.69.4", "source": { "type": "git", "url": "https://github.com/utopia-php/database.git", - "reference": "1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7" + "reference": "31f913a9c5c363e6427e69a0b8bbb9b8d901e061" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/utopia-php/database/zipball/1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7", - "reference": "1f48ccc939199a9bf45c68d44dcfbc2b5dfdb5a7", + "url": "https://api.github.com/repos/utopia-php/database/zipball/31f913a9c5c363e6427e69a0b8bbb9b8d901e061", + "reference": "31f913a9c5c363e6427e69a0b8bbb9b8d901e061", "shasum": "" }, "require": { @@ -3549,9 +3549,9 @@ ], "support": { "issues": "https://github.com/utopia-php/database/issues", - "source": "https://github.com/utopia-php/database/tree/0.69.3" + "source": "https://github.com/utopia-php/database/tree/0.69.4" }, - "time": "2025-05-16T05:54:54+00:00" + "time": "2025-05-16T13:51:43+00:00" }, { "name": "utopia-php/domains", From 78de031c74f2f0972ec9e4e3d9f534099eba090a Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 21:07:47 +0530 Subject: [PATCH 08/17] added changes --- app/config/variables.php | 9 +++++++++ app/init/registers.php | 3 +-- app/views/install/compose.phtml | 18 +++++++++++++----- src/Appwrite/Platform/Tasks/Install.php | 9 ++++++++- 4 files changed, 31 insertions(+), 8 deletions(-) diff --git a/app/config/variables.php b/app/config/variables.php index f79d4cb517..8afef87c46 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -294,6 +294,15 @@ return [ 'required' => false, 'question' => '', 'filter' => '' + ], + [ + 'name' => '_APP_DB_SCHEME', + 'description' => 'To switch between mariadb and postgresql', + 'introduction' => '1.6.0', + 'default' => 'mariadb', + 'required' => true, + 'question' => 'Choose your database (mariadb|postgresql)', + 'filter' => '' ] ], ], diff --git a/app/init/registers.php b/app/init/registers.php index a7632888c8..8c293628e3 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -99,10 +99,9 @@ $register->set('logger', function () { $register->set('pools', function () { $group = new Group(); - $dbScheme = System::getEnv('_APP_DB_SCHEME', 'mariadb'); $fallbackForDB = 'db_main=' . AppwriteURL::unparse([ - 'scheme' => $dbScheme, + 'scheme' => System::getEnv('_APP_DB_SCHEME', 'mariadb'), 'host' => System::getEnv('_APP_DB_HOST', 'mariadb'), 'port' => System::getEnv('_APP_DB_PORT', '3306'), 'user' => System::getEnv('_APP_DB_USER', ''), diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index bf27311df5..e8af80df3f 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -11,7 +11,7 @@ $httpsPort = $this->getParam('httpsPort', ''); $version = $this->getParam('version', ''); $organization = $this->getParam('organization', ''); $image = $this->getParam('image', ''); -$dbService = $this->getParam('database', 'mariadb') === 'mariadb' ? 'mariadb' : 'postgresql'; +$dbService = $this->getParam('database'); ?>services: traefik: image: traefik:2.11 @@ -885,10 +885,12 @@ $dbService = $this->getParam('database', 'mariadb') === 'mariadb' ? 'mariadb' : - OPR_EXECUTOR_STORAGE_WASABI_REGION=$_APP_STORAGE_WASABI_REGION - OPR_EXECUTOR_STORAGE_WASABI_BUCKET=$_APP_STORAGE_WASABI_BUCKET + + + mariadb: - image: mariadb:10.11 # fix issues when upgrading using: mysql_upgrade -u root -p + image: mariadb:10.11 container_name: appwrite-mariadb - <<: *x-logging restart: unless-stopped networks: - appwrite @@ -902,10 +904,11 @@ $dbService = $this->getParam('database', 'mariadb') === 'mariadb' ? 'mariadb' : - MARIADB_AUTO_UPGRADE=1 command: 'mysqld --innodb-flush-method=fsync' + + postgresql: image: postgres:15-alpine container_name: appwrite-postgresql - <<: *x-logging restart: unless-stopped networks: - appwrite @@ -916,6 +919,8 @@ $dbService = $this->getParam('database', 'mariadb') === 'mariadb' ? 'mariadb' : - POSTGRES_USER=${_APP_DB_USER} - POSTGRES_PASSWORD=${_APP_DB_PASS} + + redis: image: redis:7.2.4-alpine container_name: appwrite-redis @@ -949,7 +954,11 @@ networks: name: runtimes volumes: + appwrite-mariadb: + + appwrite-postgresql: + appwrite-redis: appwrite-cache: appwrite-uploads: @@ -957,4 +966,3 @@ volumes: appwrite-functions: appwrite-builds: appwrite-config: - appwrite-postgresql: diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index d18f6b7c88..7d13973003 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -32,7 +32,7 @@ class Install extends Action ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) - ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); + ->callback($this->action(...)); } public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void @@ -59,6 +59,13 @@ class Install extends Action Console::success('Starting Appwrite installation...'); + // Create directory with write permissions + if (!\file_exists(\dirname($this->path))) { + if (!@\mkdir(\dirname($this->path), 0755, true)) { + Console::error('Can\'t create directory ' . \dirname($this->path)); + Console::exit(1); + } + } $data = @file_get_contents($this->path . '/docker-compose.yml'); From e1207caee0395ce3e6b84f329ecec401736f9060 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Fri, 16 May 2025 23:33:21 +0530 Subject: [PATCH 09/17] updated the environment of the services in the docker compose of install --- app/views/install/compose.phtml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index e8af80df3f..f0e282b876 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -216,6 +216,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -245,6 +246,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -271,6 +273,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -305,6 +308,7 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-certificates:/storage/certificates:rw environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -361,6 +365,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -390,6 +395,7 @@ $dbService = $this->getParam('database'); - appwrite-functions:/storage/functions:rw - appwrite-builds:/storage/builds:rw environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -454,6 +460,7 @@ $dbService = $this->getParam('database'); - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -485,6 +492,7 @@ $dbService = $this->getParam('database'); - - openruntimes-executor environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -522,6 +530,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -559,6 +568,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -608,6 +618,7 @@ $dbService = $this->getParam('database'); depends_on: - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -639,6 +650,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -677,6 +689,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -706,6 +719,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -734,6 +748,7 @@ $dbService = $this->getParam('database'); - redis - environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -762,6 +777,7 @@ $dbService = $this->getParam('database'); - - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -787,6 +803,7 @@ $dbService = $this->getParam('database'); - - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -812,6 +829,7 @@ $dbService = $this->getParam('database'); - - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 From e88aebd4ad5603cc623b91f93e0d3fb0ddb2c49b Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Sat, 17 May 2025 00:05:11 +0530 Subject: [PATCH 10/17] added upgrade limit for db --- src/Appwrite/Platform/Tasks/Install.php | 4 ++++ src/Appwrite/Platform/Tasks/Upgrade.php | 6 ++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 7d13973003..1ac2fbac5f 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -181,6 +181,10 @@ class Install extends Action continue; } + if ($var['name'] === '_APP_DB_SCHEME' && $data !== false) { + continue; + } + $input[$var['name']] = Console::confirm($var['question'] . ' (default: \'' . $var['default'] . '\')'); if (empty($input[$var['name']])) { diff --git a/src/Appwrite/Platform/Tasks/Upgrade.php b/src/Appwrite/Platform/Tasks/Upgrade.php index 5f4b625462..ecf71d27a1 100644 --- a/src/Appwrite/Platform/Tasks/Upgrade.php +++ b/src/Appwrite/Platform/Tasks/Upgrade.php @@ -3,6 +3,7 @@ namespace Appwrite\Platform\Tasks; use Utopia\CLI\Console; +use Utopia\System\System; use Utopia\Validator\Boolean; use Utopia\Validator\Text; @@ -23,8 +24,8 @@ class Upgrade extends Install ->param('image', 'appwrite', new Text(0), 'Main appwrite docker image', true) ->param('interactive', 'Y', new Text(1), 'Run an interactive session', true) ->param('no-start', false, new Boolean(true), 'Run an interactive session', true) - ->param('database', 'mariadb', new Text(0), 'Database to use (mariadb|postgresql)', true) - ->callback(fn ($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database) => $this->action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database)); + ->param('database', 'mariadb', new Text(length: 0), 'Database to use (mariadb|postgresql)', true) + ->callback($this->action(...)); } public function action(string $httpPort, string $httpsPort, string $organization, string $image, string $interactive, bool $noStart, string $database): void @@ -40,6 +41,7 @@ class Upgrade extends Install Console::log(' └── docker-compose.yml'); Console::exit(1); } + $database = System::getEnv('_APP_DB_SCHEME', 'mariadb'); parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database); } } From e45befbdf20cd85229d91bb23b9a5a1789cb6374 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Tue, 20 May 2025 14:46:50 +0530 Subject: [PATCH 11/17] updated local docker for ci test on github actions and tests yml --- .github/workflows/tests.yml | 26 +++++++++++++++++++++++ app/views/install/compose.phtml | 3 ++- docker-compose.yml | 37 +++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 6fd4e89858..ccd287ec04 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -141,6 +141,11 @@ jobs: strategy: fail-fast: false matrix: + db_adapter:[ + MARIADB + POSTGRESQL, + ] + service: [ Account, Avatars, @@ -192,12 +197,33 @@ jobs: - name: Run ${{ matrix.service }} tests with Project table mode run: | echo "Using project tables" + export _APP_DATABASE_SHARED_TABLES= export _APP_DATABASE_SHARED_TABLES_V1= + # Set DB Adapter Specific ENV Vars using if-elif + if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then + export _APP_DB_SCHEME=mariadb + export _APP_DB_HOST=mariadb + export _APP_DB_PORT=3306 + export _APP_DB_SCHEMA=appwrite + elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then + export _APP_DB_SCHEME=postgresql + export _APP_DB_HOST=postgresql + export _APP_DB_PORT=5432 + export _APP_DB_SCHEMA=appwrite + else + echo "Unknown DB adapter: ${{ matrix.db_adapter }}" + exit 1 + fi + docker compose exec -T \ -e _APP_DATABASE_SHARED_TABLES \ -e _APP_DATABASE_SHARED_TABLES_V1 \ + -e _APP_DB_SCHEME \ + -e _APP_DB_HOST \ + -e _APP_DB_PORT \ + -e _APP_DB_SCHEMA \ appwrite test /usr/src/code/tests/e2e/Services/${{ matrix.service }} --debug --exclude=devKeys e2e_shared_mode_test: diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 66214a67bd..b916849137 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -955,7 +955,7 @@ $dbService = $this->getParam('database'); postgresql: - image: postgres:15-alpine + image: postgres:15 container_name: appwrite-postgresql restart: unless-stopped networks: @@ -966,6 +966,7 @@ $dbService = $this->getParam('database'); - POSTGRES_DB=${_APP_DB_SCHEMA} - POSTGRES_USER=${_APP_DB_USER} - POSTGRES_PASSWORD=${_APP_DB_PASS} + command: "postgres" diff --git a/docker-compose.yml b/docker-compose.yml index 7b0eca52a1..46f8ea6426 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -86,6 +86,7 @@ services: - ./public:/usr/src/code/public - ./src:/usr/src/code/src - ./dev:/usr/src/code/dev + - ./.env:/usr/src/code/.env depends_on: - mariadb - redis @@ -95,6 +96,7 @@ services: - -e - app/http.php environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_EDITION - _APP_WORKER_PER_CORE @@ -263,6 +265,7 @@ services: - mariadb - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -295,6 +298,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -325,6 +329,7 @@ services: - mariadb - request-catcher environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -362,6 +367,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -419,6 +425,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -454,6 +461,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -524,6 +532,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -560,6 +569,7 @@ services: - mariadb - openruntimes-executor environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -603,6 +613,7 @@ services: - maildev # - smtp environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -637,6 +648,7 @@ services: depends_on: - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -693,6 +705,7 @@ services: depends_on: - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -728,6 +741,7 @@ services: depends_on: - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -770,6 +784,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -801,6 +816,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -832,6 +848,7 @@ services: - redis - mariadb environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -863,6 +880,7 @@ services: - mariadb - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -891,6 +909,7 @@ services: - mariadb - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -918,6 +937,7 @@ services: - mariadb - redis environment: + - _APP_DB_SCHEME - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -1038,6 +1058,22 @@ services: - MARIADB_AUTO_UPGRADE=1 command: "mysqld --innodb-flush-method=fsync" + postgresql: + image: postgres:15 + container_name: appwrite-postgresql + <<: *x-logging + networks: + - appwrite + volumes: + - appwrite-postgresql:/var/lib/postgresql/data:rw + ports: + - "5432:5432" + environment: + - POSTGRES_DB=${_APP_DB_SCHEMA} + - POSTGRES_USER=${_APP_DB_USER} + - POSTGRES_PASSWORD=${_APP_DB_PASS} + command: "postgres" + redis: image: redis:7.2.4-alpine <<: *x-logging @@ -1127,6 +1163,7 @@ networks: volumes: appwrite-mariadb: + appwrite-postgresql: appwrite-redis: appwrite-cache: appwrite-uploads: From 60be48268ce8bad838892dec04361c407f98122e Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Tue, 20 May 2025 15:35:12 +0530 Subject: [PATCH 12/17] changed the depends on to scheme --- docker-compose.yml | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index 46f8ea6426..8b824d047e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,7 +88,7 @@ services: - ./dev:/usr/src/code/dev - ./.env:/usr/src/code/.env depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - redis # - clamav entrypoint: @@ -262,7 +262,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - redis environment: - _APP_DB_SCHEME @@ -296,7 +296,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -326,7 +326,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - request-catcher environment: - _APP_DB_SCHEME @@ -356,7 +356,7 @@ services: - appwrite depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -423,7 +423,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -459,7 +459,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -525,7 +525,7 @@ services: - appwrite depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw @@ -566,7 +566,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - openruntimes-executor environment: - _APP_DB_SCHEME @@ -703,7 +703,7 @@ services: - ./src:/usr/src/code/src - ./tests:/usr/src/code/tests depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -782,7 +782,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -814,7 +814,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -846,7 +846,7 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - mariadb + - ${_APP_DB_SCHEME:-mariadb} environment: - _APP_DB_SCHEME - _APP_ENV @@ -877,7 +877,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - redis environment: - _APP_DB_SCHEME @@ -906,7 +906,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - redis environment: - _APP_DB_SCHEME @@ -934,7 +934,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - mariadb + - ${_APP_DB_SCHEME:-mariadb} - redis environment: - _APP_DB_SCHEME @@ -1055,7 +1055,7 @@ services: - MYSQL_DATABASE=${_APP_DB_SCHEMA} - MYSQL_USER=${_APP_DB_USER} - MYSQL_PASSWORD=${_APP_DB_PASS} - - MARIADB_AUTO_UPGRADE=1 + - ${_APP_DB_SCHEME:-mariadb}_AUTO_UPGRADE=1 command: "mysqld --innodb-flush-method=fsync" postgresql: From 58e04b4950f5cc8a4b606c14bce7a5e6ab631ac8 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Tue, 20 May 2025 19:01:25 +0530 Subject: [PATCH 13/17] removed trailing comma from the matrix db adapter of the test --- .github/workflows/tests.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ccd287ec04..1bd05808dc 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -142,8 +142,8 @@ jobs: fail-fast: false matrix: db_adapter:[ - MARIADB - POSTGRESQL, + MARIADB, + POSTGRESQL ] service: [ From f5c54bb94550dc3bebd41955fa73245012bf81e4 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Wed, 21 May 2025 17:36:50 +0530 Subject: [PATCH 14/17] added _APP_DB_ADAPTER --- .env | 2 +- .github/workflows/tests.yml | 6 +-- app/config/variables.php | 2 +- app/init/registers.php | 20 +++++-- app/views/install/compose.phtml | 38 ++++++------- docker-compose.yml | 72 ++++++++++++------------- src/Appwrite/Platform/Tasks/Install.php | 12 +---- src/Appwrite/Platform/Tasks/Upgrade.php | 2 +- 8 files changed, 78 insertions(+), 76 deletions(-) diff --git a/.env b/.env index b6418840a6..c916cf0db6 100644 --- a/.env +++ b/.env @@ -32,7 +32,7 @@ _APP_REDIS_HOST=redis _APP_REDIS_PORT=6379 _APP_REDIS_PASS= _APP_REDIS_USER= -_APP_DB_SCHEME=mariadb +_APP_DB_ADAPTER=mariadb _APP_DB_HOST=mariadb _APP_DB_PORT=3306 _APP_DB_SCHEMA=appwrite diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 1bd05808dc..cfa8182ac3 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -203,12 +203,12 @@ jobs: # Set DB Adapter Specific ENV Vars using if-elif if [ "${{ matrix.db_adapter }}" = "MARIADB" ]; then - export _APP_DB_SCHEME=mariadb + export _APP_DB_ADAPTER=mariadb export _APP_DB_HOST=mariadb export _APP_DB_PORT=3306 export _APP_DB_SCHEMA=appwrite elif [ "${{ matrix.db_adapter }}" = "POSTGRESQL" ]; then - export _APP_DB_SCHEME=postgresql + export _APP_DB_ADAPTER=postgresql export _APP_DB_HOST=postgresql export _APP_DB_PORT=5432 export _APP_DB_SCHEMA=appwrite @@ -220,7 +220,7 @@ jobs: docker compose exec -T \ -e _APP_DATABASE_SHARED_TABLES \ -e _APP_DATABASE_SHARED_TABLES_V1 \ - -e _APP_DB_SCHEME \ + -e _APP_DB_ADAPTER \ -e _APP_DB_HOST \ -e _APP_DB_PORT \ -e _APP_DB_SCHEMA \ diff --git a/app/config/variables.php b/app/config/variables.php index 941b41f4c2..d6b8069f13 100644 --- a/app/config/variables.php +++ b/app/config/variables.php @@ -332,7 +332,7 @@ return [ 'filter' => '' ], [ - 'name' => '_APP_DB_SCHEME', + 'name' => '_APP_DB_ADAPTER', 'description' => 'To switch between mariadb and postgresql', 'introduction' => '1.6.0', 'default' => 'mariadb', diff --git a/app/init/registers.php b/app/init/registers.php index 8c293628e3..883c4f66bb 100644 --- a/app/init/registers.php +++ b/app/init/registers.php @@ -101,7 +101,7 @@ $register->set('pools', function () { $group = new Group(); $fallbackForDB = 'db_main=' . AppwriteURL::unparse([ - 'scheme' => System::getEnv('_APP_DB_SCHEME', 'mariadb'), + 'scheme' => System::getEnv('_APP_DB_ADAPTER', 'mariadb'), 'host' => System::getEnv('_APP_DB_HOST', 'mariadb'), 'port' => System::getEnv('_APP_DB_PORT', '3306'), 'user' => System::getEnv('_APP_DB_USER', ''), @@ -300,10 +300,20 @@ $register->set('db', function () { $dbUser = System::getEnv('_APP_DB_USER', ''); $dbPass = System::getEnv('_APP_DB_PASS', ''); $dbSchema = System::getEnv('_APP_DB_SCHEMA', ''); - $dbScheme = System::getEnv('_APP_DB_SCHEME', 'mariadb'); - $dsn = ($dbScheme === 'postgresql') - ? "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}" - : "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4"; + $dbAdapter = System::getEnv('_APP_DB_ADAPTER', 'mariadb'); + $dsn = ''; + + switch ($dbAdapter) { + case 'postgresql': + $dsn = "pgsql:host={$dbHost};port={$dbPort};dbname={$dbSchema}"; + break; + + case 'mysql': + case 'mariadb': + default: + $dsn = "mysql:host={$dbHost};port={$dbPort};dbname={$dbSchema};charset=utf8mb4"; + break; + } return new PDO( diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index b916849137..6012e095ad 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -106,7 +106,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_SMTP_HOST - _APP_SMTP_PORT - _APP_SMTP_SECURE @@ -224,7 +224,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -254,7 +254,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -281,7 +281,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -317,7 +317,7 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -374,7 +374,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -406,7 +406,7 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-uploads:/storage/uploads:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -473,7 +473,7 @@ $dbService = $this->getParam('database'); - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -507,7 +507,7 @@ $dbService = $this->getParam('database'); - - openruntimes-executor environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -546,7 +546,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -584,7 +584,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -636,7 +636,7 @@ $dbService = $this->getParam('database'); depends_on: - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -670,7 +670,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -709,7 +709,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -739,7 +739,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -768,7 +768,7 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -797,7 +797,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -823,7 +823,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -849,7 +849,7 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 diff --git a/docker-compose.yml b/docker-compose.yml index 7d903c2996..1d8643309a 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -88,7 +88,7 @@ services: - ./dev:/usr/src/code/dev - ./.env:/usr/src/code/.env depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis # - clamav entrypoint: @@ -96,7 +96,7 @@ services: - -e - app/http.php environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_EDITION - _APP_WORKER_PER_CORE @@ -262,10 +262,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -296,9 +296,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -326,10 +326,10 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - request-catcher environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -356,7 +356,7 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -367,7 +367,7 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -423,9 +423,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -459,9 +459,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -525,14 +525,14 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -566,10 +566,10 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - openruntimes-executor environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -613,7 +613,7 @@ services: - maildev # - smtp environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -648,7 +648,7 @@ services: depends_on: - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -703,9 +703,9 @@ services: - ./src:/usr/src/code/src - ./tests:/usr/src/code/tests depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -741,7 +741,7 @@ services: depends_on: - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -782,9 +782,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -814,9 +814,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -846,9 +846,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -877,10 +877,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -906,10 +906,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -934,10 +934,10 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_SCHEME:-mariadb} + - ${_APP_DB_ADAPTER:-mariadb} - redis environment: - - _APP_DB_SCHEME + - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -1055,7 +1055,7 @@ services: - MYSQL_DATABASE=${_APP_DB_SCHEMA} - MYSQL_USER=${_APP_DB_USER} - MYSQL_PASSWORD=${_APP_DB_PASS} - - ${_APP_DB_SCHEME:-mariadb}_AUTO_UPGRADE=1 + - ${_APP_DB_ADAPTER:-mariadb}_AUTO_UPGRADE=1 command: "mysqld --innodb-flush-method=fsync" postgresql: diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 1ac2fbac5f..387c8dbc56 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -42,14 +42,6 @@ class Install extends Action $defaultHTTPSPort = '443'; /** @var array> $vars array whre key is variable name and value is variable */ $vars = []; - $vars['_APP_DB_SCHEME'] = [ - 'name' => '_APP_DB_SCHEME', - 'default' => $database, - 'required' => true, - 'filter' => '', - 'overwrite' => true, - 'question' => 'Choose your database (mariadb|postgresql)', - ]; foreach ($config as $category) { foreach ($category['variables'] ?? [] as $var) { @@ -181,7 +173,7 @@ class Install extends Action continue; } - if ($var['name'] === '_APP_DB_SCHEME' && $data !== false) { + if ($var['name'] === '_APP_DB_ADAPTER' && $data !== false) { continue; } @@ -201,7 +193,7 @@ class Install extends Action } } } - $database = $input['_APP_DB_SCHEME']; + $database = $input['_APP_DB_ADAPTER']; if ($database === 'postgresql') { $input['_APP_DB_HOST'] = 'postgresql'; $input['_APP_DB_PORT'] = 5432; diff --git a/src/Appwrite/Platform/Tasks/Upgrade.php b/src/Appwrite/Platform/Tasks/Upgrade.php index ecf71d27a1..5b9a9e1f3a 100644 --- a/src/Appwrite/Platform/Tasks/Upgrade.php +++ b/src/Appwrite/Platform/Tasks/Upgrade.php @@ -41,7 +41,7 @@ class Upgrade extends Install Console::log(' └── docker-compose.yml'); Console::exit(1); } - $database = System::getEnv('_APP_DB_SCHEME', 'mariadb'); + $database = System::getEnv('_APP_DB_ADAPTER', 'mariadb'); parent::action($httpPort, $httpsPort, $organization, $image, $interactive, $noStart, $database); } } From e7f51023bf030dea168c5a4e9812c967ed51b002 Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Wed, 21 May 2025 18:13:20 +0530 Subject: [PATCH 15/17] updated updating database in the installation --- docker-compose.yml | 1 - src/Appwrite/Platform/Tasks/Install.php | 1 + 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 1d8643309a..280f690fbc 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -86,7 +86,6 @@ services: - ./public:/usr/src/code/public - ./src:/usr/src/code/src - ./dev:/usr/src/code/dev - - ./.env:/usr/src/code/.env depends_on: - ${_APP_DB_ADAPTER:-mariadb} - redis diff --git a/src/Appwrite/Platform/Tasks/Install.php b/src/Appwrite/Platform/Tasks/Install.php index 387c8dbc56..550c50f4c9 100644 --- a/src/Appwrite/Platform/Tasks/Install.php +++ b/src/Appwrite/Platform/Tasks/Install.php @@ -174,6 +174,7 @@ class Install extends Action } if ($var['name'] === '_APP_DB_ADAPTER' && $data !== false) { + $input[$var['name']] = $database; continue; } From f1b2ac0d1335ed2df25dfe4020e8c66a0e0d1eae Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Wed, 21 May 2025 18:22:16 +0530 Subject: [PATCH 16/17] updated tests yml --- .github/workflows/tests.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index cfa8182ac3..7ee1e50abe 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -141,7 +141,7 @@ jobs: strategy: fail-fast: false matrix: - db_adapter:[ + db_adapter: [ MARIADB, POSTGRESQL ] From be1e52529a0cf6021a673e7754715c6aee8a0f8e Mon Sep 17 00:00:00 2001 From: ArnabChatterjee20k Date: Tue, 27 May 2025 22:07:49 +0530 Subject: [PATCH 17/17] updated depends on to the host instead of adapter and changed to the grouping of env vars --- app/views/install/compose.phtml | 36 ++++++++--------- docker-compose.yml | 71 ++++++++++++++++----------------- 2 files changed, 53 insertions(+), 54 deletions(-) diff --git a/app/views/install/compose.phtml b/app/views/install/compose.phtml index 6012e095ad..afeab4033e 100644 --- a/app/views/install/compose.phtml +++ b/app/views/install/compose.phtml @@ -224,7 +224,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -239,6 +238,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_USAGE_STATS - _APP_LOGGING_CONFIG @@ -254,7 +254,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -267,6 +266,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG appwrite-worker-webhooks: @@ -281,7 +281,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -292,6 +291,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -317,7 +317,6 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -330,6 +329,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_STORAGE_DEVICE - _APP_STORAGE_S3_ACCESS_KEY - _APP_STORAGE_S3_SECRET @@ -374,7 +374,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -387,6 +386,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG appwrite-worker-builds: @@ -406,7 +406,6 @@ $dbService = $this->getParam('database'); - appwrite-builds:/storage/builds:rw - appwrite-uploads:/storage/uploads:rw environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -421,6 +420,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_VCS_GITHUB_APP_NAME - _APP_VCS_GITHUB_PRIVATE_KEY @@ -473,7 +473,6 @@ $dbService = $this->getParam('database'); - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -492,6 +491,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG appwrite-worker-functions: @@ -507,7 +507,6 @@ $dbService = $this->getParam('database'); - - openruntimes-executor environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -522,6 +521,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_FUNCTIONS_TIMEOUT - _APP_SITES_TIMEOUT - _APP_COMPUTE_BUILD_TIMEOUT @@ -546,7 +546,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -557,6 +556,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -584,7 +584,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -597,6 +596,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_SMS_FROM - _APP_SMS_PROVIDER @@ -636,7 +636,6 @@ $dbService = $this->getParam('database'); depends_on: - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -654,6 +653,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_MIGRATIONS_FIREBASE_CLIENT_ID - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET @@ -670,7 +670,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -688,6 +687,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_MAINTENANCE_INTERVAL - _APP_MAINTENANCE_RETENTION_EXECUTION - _APP_MAINTENANCE_RETENTION_CACHE @@ -709,7 +709,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -718,6 +717,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -739,7 +739,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -748,6 +747,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -768,7 +768,6 @@ $dbService = $this->getParam('database'); - redis - environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -777,6 +776,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -797,7 +797,6 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -810,6 +809,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER appwrite-task-scheduler-executions: image: /: @@ -823,7 +823,6 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -836,6 +835,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER appwrite-task-scheduler-messages: image: /: @@ -849,7 +849,6 @@ $dbService = $this->getParam('database'); - - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -862,6 +861,7 @@ $dbService = $this->getParam('database'); - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER appwrite-assistant: image: appwrite/assistant:0.4.0 diff --git a/docker-compose.yml b/docker-compose.yml index 280f690fbc..7888bebeea 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -87,7 +87,7 @@ services: - ./src:/usr/src/code/src - ./dev:/usr/src/code/dev depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - redis # - clamav entrypoint: @@ -95,7 +95,6 @@ services: - -e - app/http.php environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_EDITION - _APP_WORKER_PER_CORE @@ -130,6 +129,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_SMTP_HOST - _APP_SMTP_PORT - _APP_SMTP_SECURE @@ -261,10 +261,9 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPTIONS_ABUSE @@ -279,6 +278,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_USAGE_STATS - _APP_LOGGING_CONFIG - _APP_DATABASE_SHARED_TABLES @@ -295,9 +295,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -310,6 +309,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_DATABASE_SHARED_TABLES @@ -325,10 +325,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - request-catcher environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -338,6 +337,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -355,7 +355,7 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} volumes: - appwrite-uploads:/storage/uploads:rw - appwrite-cache:/storage/cache:rw @@ -366,7 +366,6 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -379,6 +378,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_STORAGE_DEVICE - _APP_STORAGE_S3_ACCESS_KEY - _APP_STORAGE_S3_SECRET @@ -422,9 +422,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -437,6 +436,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_WORKERS_NUM - _APP_QUEUE_NAME @@ -458,9 +458,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -475,6 +474,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_VCS_GITHUB_APP_NAME - _APP_VCS_GITHUB_PRIVATE_KEY @@ -524,14 +524,13 @@ services: - appwrite depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} volumes: - appwrite-config:/storage/config:rw - appwrite-certificates:/storage/certificates:rw - ./app:/usr/src/code/app - ./src:/usr/src/code/src environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -550,6 +549,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_DATABASE_SHARED_TABLES @@ -565,10 +565,9 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - openruntimes-executor environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -583,6 +582,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_FUNCTIONS_TIMEOUT - _APP_SITES_TIMEOUT - _APP_COMPUTE_BUILD_TIMEOUT @@ -612,7 +612,6 @@ services: - maildev # - smtp environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -647,7 +646,6 @@ services: depends_on: - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -660,6 +658,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_SMS_FROM - _APP_SMS_PROVIDER @@ -702,9 +701,8 @@ services: - ./src:/usr/src/code/src - ./tests:/usr/src/code/tests depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -722,6 +720,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_LOGGING_CONFIG - _APP_MIGRATIONS_FIREBASE_CLIENT_ID - _APP_MIGRATIONS_FIREBASE_CLIENT_SECRET @@ -740,7 +739,6 @@ services: depends_on: - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_DOMAIN @@ -758,6 +756,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_MAINTENANCE_INTERVAL - _APP_MAINTENANCE_RETENTION_EXECUTION - _APP_MAINTENANCE_RETENTION_CACHE @@ -781,9 +780,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -792,6 +790,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -813,9 +812,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -824,6 +822,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -845,9 +844,8 @@ services: - ./src:/usr/src/code/src depends_on: - redis - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -856,6 +854,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_REDIS_HOST - _APP_REDIS_PORT - _APP_REDIS_USER @@ -876,10 +875,9 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -892,6 +890,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_DATABASE_SHARED_TABLES appwrite-task-scheduler-executions: @@ -905,10 +904,9 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -921,6 +919,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER appwrite-task-scheduler-messages: entrypoint: schedule-messages @@ -933,10 +932,9 @@ services: - ./app:/usr/src/code/app - ./src:/usr/src/code/src depends_on: - - ${_APP_DB_ADAPTER:-mariadb} + - ${_APP_DB_HOST:-mariadb} - redis environment: - - _APP_DB_ADAPTER - _APP_ENV - _APP_WORKER_PER_CORE - _APP_OPENSSL_KEY_V1 @@ -949,6 +947,7 @@ services: - _APP_DB_SCHEMA - _APP_DB_USER - _APP_DB_PASS + - _APP_DB_ADAPTER - _APP_DATABASE_SHARED_TABLES appwrite-assistant: @@ -1054,7 +1053,7 @@ services: - MYSQL_DATABASE=${_APP_DB_SCHEMA} - MYSQL_USER=${_APP_DB_USER} - MYSQL_PASSWORD=${_APP_DB_PASS} - - ${_APP_DB_ADAPTER:-mariadb}_AUTO_UPGRADE=1 + - MARIADB_AUTO_UPGRADE=1 command: "mysqld --innodb-flush-method=fsync" postgresql: