From ec71d33f5e5c80ee4e9bc87aaebd578fdd15a675 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Thu, 30 Apr 2026 16:27:08 +0200 Subject: [PATCH] fix(railpack): pin frontend image version via config constant Remove RAILPACK_FRONTEND_IMAGE env var from helper Dockerfile and resolve the image ref at runtime using a new `railpack_version` constant in config. Eliminates Docker build-time env interpolation for BUILDKIT_SYNTAX arg. --- app/Jobs/ApplicationDeploymentJob.php | 5 ++--- config/constants.php | 1 + docker/coolify-helper/Dockerfile | 1 - tests/Unit/ApplicationDeploymentRailpackConfigTest.php | 5 ++++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/app/Jobs/ApplicationDeploymentJob.php b/app/Jobs/ApplicationDeploymentJob.php index 85f438879..420fe8fd4 100644 --- a/app/Jobs/ApplicationDeploymentJob.php +++ b/app/Jobs/ApplicationDeploymentJob.php @@ -53,8 +53,6 @@ class ApplicationDeploymentJob implements ShouldBeEncrypted, ShouldQueue private const RAILPACK_GENERATED_CONFIG_PATH = '.coolify/railpack.generated.json'; - private const RAILPACK_FRONTEND_IMAGE_ENV = '${RAILPACK_FRONTEND_IMAGE}'; - public $tries = 1; public $timeout = 3600; @@ -2568,11 +2566,12 @@ private function railpack_build_command(string $imageName, Collection $variables $environmentPrefix = $this->railpack_build_environment_prefix($variables); $secretFlags = $this->railpack_build_secret_flags($variables); + $frontendImage = 'ghcr.io/railwayapp/railpack-frontend:v'.config('constants.coolify.railpack_version'); return 'docker buildx create --name coolify-railpack --driver docker-container 2>/dev/null || true' ." && {$environmentPrefix}docker buildx build --builder coolify-railpack" ." {$this->addHosts} --network host" - .' --build-arg BUILDKIT_SYNTAX="'.self::RAILPACK_FRONTEND_IMAGE_ENV.'"' + ." --build-arg BUILDKIT_SYNTAX=\"{$frontendImage}\"" ." {$cacheArgs}" ."{$secretFlags}" .' -f /artifacts/railpack-plan.json' diff --git a/config/constants.php b/config/constants.php index 867cc22d9..dedafa7d5 100644 --- a/config/constants.php +++ b/config/constants.php @@ -5,6 +5,7 @@ 'version' => '4.1.0', 'helper_version' => '1.0.13', 'realtime_version' => '1.0.14', + 'railpack_version' => '0.22.0', 'self_hosted' => env('SELF_HOSTED', true), 'autoupdate' => env('AUTOUPDATE'), 'base_config_path' => env('BASE_CONFIG_PATH', '/data/coolify'), diff --git a/docker/coolify-helper/Dockerfile b/docker/coolify-helper/Dockerfile index 35798000b..263c5a311 100644 --- a/docker/coolify-helper/Dockerfile +++ b/docker/coolify-helper/Dockerfile @@ -35,7 +35,6 @@ ARG MISE_VERSION USER root WORKDIR /artifacts ENV RAILPACK_VERSION=${RAILPACK_VERSION} -ENV RAILPACK_FRONTEND_IMAGE=ghcr.io/railwayapp/railpack-frontend:v${RAILPACK_VERSION} RUN apk upgrade --no-cache && \ apk add --no-cache bash curl git git-lfs openssh-client tar tini RUN mkdir -p ~/.docker/cli-plugins diff --git a/tests/Unit/ApplicationDeploymentRailpackConfigTest.php b/tests/Unit/ApplicationDeploymentRailpackConfigTest.php index e3516268c..5314fa6b8 100644 --- a/tests/Unit/ApplicationDeploymentRailpackConfigTest.php +++ b/tests/Unit/ApplicationDeploymentRailpackConfigTest.php @@ -4,6 +4,9 @@ use App\Jobs\ApplicationDeploymentJob; use App\Models\Application; use Illuminate\Support\Collection; +use Tests\TestCase; + +uses(TestCase::class); class TestableRailpackDeploymentJob extends ApplicationDeploymentJob { @@ -228,5 +231,5 @@ function invokeRailpackMethod(object $job, ReflectionClass $reflection, string $ expect($command)->toContain('--secret id=RAILPACK_INSTALL_CMD,env=RAILPACK_INSTALL_CMD'); expect($command)->toContain('--secret id=SECRET_JSON,env=SECRET_JSON'); expect($command)->toContain(' --build-arg secrets-hash='); - expect($command)->toContain('--build-arg BUILDKIT_SYNTAX="${RAILPACK_FRONTEND_IMAGE}"'); + expect($command)->toContain('--build-arg BUILDKIT_SYNTAX="ghcr.io/railwayapp/railpack-frontend:v'.config('constants.coolify.railpack_version').'"'); });