diff --git a/server/.gitignore b/server/.gitignore
index 09c667e09ca32eb4e05e266854347574be55928b..4a918f4ad2eb7747f1a202ffd572850ef66bba81 100644
--- a/server/.gitignore
+++ b/server/.gitignore
@@ -3,6 +3,7 @@ nbproject/
 .idea/
 vendor/*
 phpunit-coverage/
+doctrine_cache/
 coverage/
 data/
 build/*
diff --git a/server/app/dependencies.php b/server/app/dependencies.php
index 42d875cc68412bb91c8618646e43b524f951f258..74401b8fea3a495a927c716d2f4a36f1ebefa63f 100644
--- a/server/app/dependencies.php
+++ b/server/app/dependencies.php
@@ -22,10 +22,17 @@ $container->set('em', function (ContainerInterface $c) {
     $settings = $c->get(SETTINGS)['database'];
     $devMode = boolval($settings['dev_mode']);
     $proxyDir = getcwd() . '/../doctrine-proxy';
-    $cache = null;
-    if ($devMode == false) {
-        $cache = new \Doctrine\Common\Cache\ApcuCache();
+
+    if ($devMode) {
+        $cache = \Doctrine\Common\Cache\Psr6\DoctrineProvider::wrap(
+            new \Symfony\Component\Cache\Adapter\ArrayAdapter()
+        );
+    } else {
+        $cache = \Doctrine\Common\Cache\Psr6\DoctrineProvider::wrap(
+            new \Symfony\Component\Cache\Adapter\FilesystemAdapter(directory: '/project/doctrine_cache')
+        );
     }
+
     $dc = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(
         array('src/Entity'),
         $devMode,
@@ -33,12 +40,11 @@ $container->set('em', function (ContainerInterface $c) {
         $cache
     );
     $dc->setAutogenerateProxyClasses(false);
-    
+
     if ($devMode) {
         $dc->setSQLLogger(new \Doctrine\DBAL\Logging\DebugStack());
-    } else {
-        $dc->setQueryCacheImpl($cache);
     }
+
     return \Doctrine\ORM\EntityManager::create($settings['connection_options'], $dc);
 });
 
diff --git a/server/cli-config.php b/server/cli-config.php
index d0351e855acb15e434fe25bff11bd0ccd160b1e4..a31ab47c61a838588ed9ba2428dbf7a150dbea39 100644
--- a/server/cli-config.php
+++ b/server/cli-config.php
@@ -1,30 +1,28 @@
 <?php
-// File needed by doctrine cli
-require 'vendor/autoload.php';
 
-$settings = require './app/settings.php';
-$database = $settings['database'];
-$devMode = boolval($database['dev_mode']);
-$proxyDir = getcwd() . '/doctrine-proxy';
-$cache = null;
-if ($devMode == false) {
-    $cache = new \Doctrine\Common\Cache\ApcuCache();
-}
+/*
+ * This file is part of Anis Server.
+ *
+ * (c) Laboratoire d'Astrophysique de Marseille / CNRS
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ */
+declare(strict_types=1);
 
-$c = \Doctrine\ORM\Tools\Setup::createAnnotationMetadataConfiguration(
-    array('src/Entity'),
-    $devMode,
-    $proxyDir,
-    $cache
-);
-$c->setAutoGenerateProxyClasses(false);
+use DI\Container;
+use Doctrine\ORM\Tools\Console\ConsoleRunner;
 
-if ($devMode) {
-    $c->setSQLLogger(new \Doctrine\DBAL\Logging\DebugStack());
-} else {
-    $c->setQueryCacheImpl($cache);
-}
+// Autoloading for libraries
+require __DIR__ . '/vendor/autoload.php';
 
-$em = \Doctrine\ORM\EntityManager::create($database['connection_options'], $c);
+// Load app constants
+require __DIR__ . '/app/constants.php';
 
-return \Doctrine\ORM\Tools\Console\ConsoleRunner::createHelperSet($em);
+// Create Container using PHP-DI
+$container = new Container();
+
+// Setup dependencies
+require __DIR__ . '/app/dependencies.php';
+
+return ConsoleRunner::createHelperSet($container->get('em'));
\ No newline at end of file