From 5eeae400412c2269e664367e811c302f94906e0f Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Wed, 14 Oct 2026 10:28:53 +0200 Subject: [PATCH] chore(docker): upgrade serversideup PHP images to v5.0.0 Move s6 user bundles to user-bundles.d and update packaging assertions. Preserve production OPcache timestamp validation and smaller memory limits. --- docker/development/Dockerfile | 3 +-- docker/production/Dockerfile | 8 ++++++-- .../user/contents.d/db-migration | 0 .../{s6-rc.d => user-bundles.d}/user/contents.d/horizon | 0 .../user/contents.d/init-script | 0 .../user/contents.d/init-seeder | 0 .../{s6-rc.d => user-bundles.d}/user/contents.d/reverb | 0 .../user/contents.d/scheduler-worker | 0 .../user/contents.d/terminal-server | 0 tests/Feature/ReverbAndTerminalPackagingTest.php | 4 ++-- 10 files changed, 9 insertions(+), 6 deletions(-) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/db-migration (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/horizon (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/init-script (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/init-seeder (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/reverb (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/scheduler-worker (100%) rename docker/production/etc/s6-overlay/{s6-rc.d => user-bundles.d}/user/contents.d/terminal-server (100%) diff --git a/docker/development/Dockerfile b/docker/development/Dockerfile index b024916b7d..aa178765ad 100644 --- a/docker/development/Dockerfile +++ b/docker/development/Dockerfile @@ -1,7 +1,6 @@ # Versions # https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx-alpine -# Pinned: v5 moved user bundles to /etc/s6-overlay/user-bundles.d and breaks startup (#12141) -ARG SERVERSIDEUP_PHP_VERSION=8.4-fpm-nginx-alpine-v4.5.1 +ARG SERVERSIDEUP_PHP_VERSION=8.4-fpm-nginx-alpine-v5.0.0 # https://github.com/cloudflare/cloudflared/releases ARG CLOUDFLARED_VERSION=2025.7.0 # https://www.postgresql.org/support/versioning/ diff --git a/docker/production/Dockerfile b/docker/production/Dockerfile index 8c4b349c5e..9ddff6476d 100644 --- a/docker/production/Dockerfile +++ b/docker/production/Dockerfile @@ -1,7 +1,6 @@ # Versions # https://hub.docker.com/r/serversideup/php/tags?name=8.4-fpm-nginx-alpine -# Pinned: v5 moved user bundles to /etc/s6-overlay/user-bundles.d and breaks startup (#12141) -ARG SERVERSIDEUP_PHP_VERSION=8.4-fpm-nginx-alpine-v4.5.1 +ARG SERVERSIDEUP_PHP_VERSION=8.4-fpm-nginx-alpine-v5.0.0 # https://github.com/cloudflare/cloudflared/releases ARG CLOUDFLARED_VERSION=2026.7.3 # https://www.postgresql.org/support/versioning/ @@ -159,6 +158,11 @@ RUN mkdir -p /usr/local/bin && \ # Configure PHP COPY docker/production/etc/php/conf.d/zzz-custom-php.ini /usr/local/etc/php/conf.d/zzz-custom-php.ini ENV PHP_OPCACHE_ENABLE=1 +# v5 defaults this to 0. Keep 1: app:init rebuilds the Laravel caches while php-fpm already runs. +ENV PHP_OPCACHE_VALIDATE_TIMESTAMPS=1 +# v5 defaults to 256 MB with 32 MB interned strings. Every PHP CLI process has its own cache, so keep it small. +ENV PHP_OPCACHE_MEMORY_CONSUMPTION=128 +ENV PHP_OPCACHE_INTERNED_STRINGS_BUFFER=16 # Configure entrypoint COPY --chmod=755 docker/production/entrypoint.d/ /etc/entrypoint.d diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/db-migration b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/db-migration similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/db-migration rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/db-migration diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/horizon b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/horizon similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/horizon rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/horizon diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/init-script b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/init-script similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/init-script rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/init-script diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/init-seeder b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/init-seeder similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/init-seeder rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/init-seeder diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/reverb b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/reverb similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/reverb rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/reverb diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/scheduler-worker similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/scheduler-worker rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/scheduler-worker diff --git a/docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/terminal-server b/docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/terminal-server similarity index 100% rename from docker/production/etc/s6-overlay/s6-rc.d/user/contents.d/terminal-server rename to docker/production/etc/s6-overlay/user-bundles.d/user/contents.d/terminal-server diff --git a/tests/Feature/ReverbAndTerminalPackagingTest.php b/tests/Feature/ReverbAndTerminalPackagingTest.php index 04a82db3d1..4be08dcdd5 100644 --- a/tests/Feature/ReverbAndTerminalPackagingTest.php +++ b/tests/Feature/ReverbAndTerminalPackagingTest.php @@ -113,8 +113,8 @@ it('runs Reverb and terminal websocket services inside the Coolify containers', ->toContain('exec node /terminal/terminal-server.js') ->and(file_exists(base_path(dirname($dockerfile)."/etc/s6-overlay/s6-rc.d/reverb/dependencies.d/{$dependencyService}")))->toBeTrue() ->and(file_exists(base_path(dirname($dockerfile)."/etc/s6-overlay/s6-rc.d/terminal-server/dependencies.d/{$dependencyService}")))->toBeTrue() - ->and(file_exists(base_path(dirname($dockerfile).'/etc/s6-overlay/s6-rc.d/user/contents.d/reverb')))->toBeTrue() - ->and(file_exists(base_path(dirname($dockerfile).'/etc/s6-overlay/s6-rc.d/user/contents.d/terminal-server')))->toBeTrue(); + ->and(file_exists(base_path(dirname($dockerfile).'/etc/s6-overlay/user-bundles.d/user/contents.d/reverb')))->toBeTrue() + ->and(file_exists(base_path(dirname($dockerfile).'/etc/s6-overlay/user-bundles.d/user/contents.d/terminal-server')))->toBeTrue(); })->with([ 'production image' => ['docker/production/Dockerfile', 'init-script'], 'development image' => ['docker/development/Dockerfile', 'init-setup'],