Skip to content

Official docker configuration example is broken (Undefined constant "CodeIgniter\Log\CI_DEBUG")

The docker example given in the official documentation results in a non-working production environment. I’ve read on Discord that it seems to be the case since Castopod 1.6.1 (because of some codeigniter update maybe).

The error thrown is the following:

castopod-app  | Fatal error: Uncaught Error: Undefined constant "CodeIgniter\Log\CI_DEBUG" in /var/www/castopod/vendor/codeigniter4/framework/system/Log/Logger.php:120
castopod-app  | Stack trace:
castopod-app  | #0 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(400): CodeIgniter\Log\Logger->__construct(Object(Config\Logger))
castopod-app  | #1 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::logger(false)
castopod-app  | #2 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(199): CodeIgniter\Config\BaseService::__callStatic('logger', Array)
castopod-app  | #3 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(397): CodeIgniter\Config\BaseService::getSharedInstance('logger')
castopod-app  | #4 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::logger(true)
castopod-app  | #5 /var/www/castopod/vendor/codeigniter4/framework/system/Common.php(810): CodeIgniter\Config\BaseService::__callStatic('logger', Array)
castopod-app  | #6 /var/www/castopod/vendor/codeigniter4/framework/system/Cache/CacheFactory.php(76): log_message('critical', 'CodeIgniter\\Exc...')
castopod-app  | #7 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(124): CodeIgniter\Cache\CacheFactory::getHandler(Object(Config\Cache))
castopod-app  | #8 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::cache(Object(Config\Cache), false)
castopod-app  | #9 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(199): CodeIgniter\Config\BaseService::__callStatic('cache', Array)
castopod-app  | #10 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(119): CodeIgniter\Config\BaseService::getSharedInstance('cache', NULL)
castopod-app  | #11 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::cache()
castopod-app  | #12 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(449): CodeIgniter\Config\BaseService::__callStatic('cache', Array)
castopod-app  | #13 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::responsecache(Object(Config\Cache), NULL, false)
castopod-app  | #14 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(199): CodeIgniter\Config\BaseService::__callStatic('responsecache', Array)
castopod-app  | #15 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(445): CodeIgniter\Config\BaseService::getSharedInstance('responsecache', NULL, NULL)
castopod-app  | #16 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::responsecache()
castopod-app  | #17 /var/www/castopod/vendor/codeigniter4/framework/system/CodeIgniter.php(194): CodeIgniter\Config\BaseService::__callStatic('responsecache', Array)
castopod-app  | #18 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(159): CodeIgniter\CodeIgniter->__construct(Object(Config\App))
castopod-app  | #19 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::codeigniter(Object(Config\App), false)
castopod-app  | #20 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(199): CodeIgniter\Config\BaseService::__callStatic('codeigniter', Array)
castopod-app  | #21 /var/www/castopod/vendor/codeigniter4/framework/system/Config/Services.php(154): CodeIgniter\Config\BaseService::getSharedInstance('codeigniter', NULL)
castopod-app  | #22 /var/www/castopod/vendor/codeigniter4/framework/system/Config/BaseService.php(258): CodeIgniter\Config\Services::codeigniter()
castopod-app  | #23 /var/www/castopod/spark(87): CodeIgniter\Config\BaseService::__callStatic('codeigniter', Array)
castopod-app  | #24 {main}
castopod-app  |   thrown in /var/www/castopod/vendor/codeigniter4/framework/system/Log/Logger.php on line 120

The problem seem to be that redis needs a password. Everything works after setting one.

So docker-compose.yml in the documentation should be updated with something like this:

@@ -14,6 +14,7 @@ services:
       CP_ANALYTICS_SALT: changeme
       CP_CACHE_HANDLER: redis
       CP_REDIS_HOST: redis
+      CP_REDIS_PASSWORD: changeme-redis-pass
     networks:
       - castopod-app
       - castopod-db
@@ -42,6 +43,7 @@ services:
       - castopod-cache:/data
     networks:
       - castopod-app
+    command: --requirepass changeme-redis-pass
 
 volumes:
   castopod-media: