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: