feat(docker): replace all-in-one image with FrankenPHP and Caddy based image + discard other images

- use serversideup/php as a base image
- remove nginx unit base
- remove app / webserver images
- add bundle stage to remove pipeline dependency
- update docker setup docs
- edit gitlabci rules and release logic
This commit is contained in:
Yassine Doghri 2026-02-15 19:32:01 +01:00
commit e5fb676cb6
No known key found for this signature in database
GPG key ID: 1F41CB39A01C099A
58 changed files with 5830 additions and 5318 deletions

View file

@ -75,7 +75,7 @@ class NotificationController extends BaseController
{
$notifications = new NotificationModel()
->where('target_actor_id', $podcast->actor_id)
->where('read_at', null)
->where('read_at')
->findAll();
foreach ($notifications as $notification) {

View file

@ -677,7 +677,7 @@ class PodcastController extends BaseController
$episodes = new EpisodeModel()
->where('podcast_id', $podcast->id)
->where('published_at !=', null)
->where('published_at !=')
->findAll();
foreach ($episodes as $episode) {
@ -846,7 +846,7 @@ class PodcastController extends BaseController
$episodes = new EpisodeModel()
->where('podcast_id', $podcast->id)
->where('published_at !=', null)
->where('published_at !=')
->findAll();
foreach ($episodes as $episode) {
@ -914,7 +914,7 @@ class PodcastController extends BaseController
$episodes = new EpisodeModel()
->where('podcast_id', $podcast->id)
->where('published_at !=', null)
->where('published_at !=')
->findAll();
foreach ($episodes as $episode) {

View file

@ -52,7 +52,7 @@ class EpisodeController extends BaseApiController
(int) $this->request->getGet('offset'),
);
array_map(static function ($episode): void {
array_map(static function (Episode $episode): void {
self::mapEpisode($episode);
}, $data);

View file

@ -20,7 +20,7 @@ class PodcastController extends BaseApiController
/** @var array<string,mixed> $data */
$data = new PodcastModel()
->findAll();
array_map(static function ($podcast): void {
array_map(static function (Podcast $podcast): void {
self::mapPodcast($podcast);
}, $data);
return $this->respond($data);

View file

@ -283,7 +283,7 @@ if (! function_exists('get_actor_ids_with_unread_notifications')) {
$unreadNotifications = new NotificationModel()
->whereIn('target_actor_id', array_column($userPodcasts, 'actor_id'))
->where('read_at', null)
->where('read_at')
->findAll();
return array_column($unreadNotifications, 'target_actor_id');

View file

@ -42,7 +42,7 @@ abstract class AbstractObject
}
// removes all NULL, FALSE and Empty Strings but leaves 0 (zero) values
return array_filter($array, static fn ($value): bool => $value !== null && $value !== false && $value !== '');
return array_filter($array, static fn ($value): bool => ! in_array($value, [null, false, ''], true));
}
public function toJSON(): string

View file

@ -120,7 +120,7 @@ class SubscriptionModel extends Model
'status' => 'active',
])
->groupStart()
->where('expires_at', null)
->where('expires_at')
->orWhere('`expires_at` > UTC_TIMESTAMP()', null, false)
->groupEnd()
->first();