diff --git a/apps/cli-go/pkg/config/templates/Dockerfile b/apps/cli-go/pkg/config/templates/Dockerfile index 7765447aa2..b62381ded1 100644 --- a/apps/cli-go/pkg/config/templates/Dockerfile +++ b/apps/cli-go/pkg/config/templates/Dockerfile @@ -3,17 +3,17 @@ FROM supabase/postgres:17.6.1.158 AS pg # Append to ServiceImages when adding new dependencies below FROM library/kong:2.8.1 AS kong FROM axllent/mailpit:v1.30.2 AS mailpit -FROM postgrest/postgrest:v14.15 AS postgrest +FROM postgrest/postgrest:v14.16 AS postgrest FROM supabase/postgres-meta:v0.96.6 AS pgmeta -FROM supabase/studio:2026.07.27-sha-cbb076d AS studio +FROM supabase/studio:2026.08.03-sha-022b374 AS studio FROM darthsim/imgproxy:v3.8.0 AS imgproxy -FROM supabase/edge-runtime:v1.74.2 AS edgeruntime +FROM supabase/edge-runtime:v1.74.3 AS edgeruntime FROM timberio/vector:0.53.0-alpine AS vector FROM supabase/supavisor:2.9.7 AS supavisor -FROM supabase/gotrue:v2.194.0 AS gotrue -FROM supabase/realtime:v2.120.3 AS realtime -FROM supabase/storage-api:v1.67.20 AS storage -FROM supabase/logflare:1.47.1 AS logflare +FROM supabase/gotrue:v2.195.0 AS gotrue +FROM supabase/realtime:v2.123.1 AS realtime +FROM supabase/storage-api:v1.68.1 AS storage +FROM supabase/logflare:1.49.2 AS logflare # Append to JobImages when adding new dependencies below FROM supabase/pgadmin-schema-diff:cli-0.0.5 AS differ FROM supabase/migra:3.0.1663481299 AS migra diff --git a/apps/cli/src/legacy/commands/functions/serve/serve.integration.test.ts b/apps/cli/src/legacy/commands/functions/serve/serve.integration.test.ts index 8391ab53d7..b5bb2fbef3 100644 --- a/apps/cli/src/legacy/commands/functions/serve/serve.integration.test.ts +++ b/apps/cli/src/legacy/commands/functions/serve/serve.integration.test.ts @@ -29,6 +29,8 @@ import { ProcessControl, type CliProcessSignal, } from "../../../../shared/runtime/process-control.service.ts"; +import { dockerfileServiceImage } from "../../../../shared/services/dockerfile-images.ts"; +import { legacyGetRegistryImageUrl } from "../../../shared/legacy-docker-registry.ts"; import type { LegacyFunctionsServeFlags } from "./serve.handler.ts"; const deployMockState = vi.hoisted(() => ({ @@ -617,6 +619,9 @@ describe("legacy functions serve integration", () => { throw new Error("expected docker run call"); } + expect(dockerRun.args).toContain( + legacyGetRegistryImageUrl(dockerfileServiceImage("edgeruntime")), + ); expect(dockerRun.args.join(" ")).not.toContain(multilineValue); expect(dockerRun.args.join(" ")).not.toContain("EOF_ENV_0"); diff --git a/apps/cli/src/legacy/shared/legacy-edge-runtime-image.ts b/apps/cli/src/legacy/shared/legacy-edge-runtime-image.ts index 6bc21cbfb1..6523ac2a7d 100644 --- a/apps/cli/src/legacy/shared/legacy-edge-runtime-image.ts +++ b/apps/cli/src/legacy/shared/legacy-edge-runtime-image.ts @@ -1,19 +1,18 @@ import { Effect, type FileSystem, type Path } from "effect"; +import { dockerfileServiceImage } from "../../shared/services/dockerfile-images.ts"; /** * Resolves the edge-runtime Docker image the way Go's `config.Load` does * (`apps/cli-go/pkg/config/config.go:445,682-683,999-1007`), for the * declarative pg-delta scripts that run inside the edge-runtime container. * - * The default tag is baked into the Go binary via the embedded Dockerfile - * (`FROM supabase/edge-runtime:v1.74.2 AS edgeruntime`), mirrored here as a - * constant. A pinned tag in `supabase/.temp/edge-runtime-version` overrides it - * (written by `supabase start`). `edge_runtime.deno_version = 1` selects the - * legacy `deno1` image instead (default `deno_version = 2` keeps v1.74.2). + * The default tag is baked into the Go binary via the embedded Dockerfile. A + * pinned tag in `supabase/.temp/edge-runtime-version` overrides it (written by + * `supabase start`). `edge_runtime.deno_version = 1` selects the legacy `deno1` + * image instead (default `deno_version = 2` keeps the Dockerfile image). */ -// `FROM supabase/edge-runtime:v1.74.2 AS edgeruntime` (embedded Dockerfile). -export const LEGACY_EDGE_RUNTIME_IMAGE = "supabase/edge-runtime:v1.74.2"; +export const LEGACY_EDGE_RUNTIME_IMAGE = dockerfileServiceImage("edgeruntime"); // `deno1` (`pkg/config/constants.go:15`) — used when `deno_version = 1`. const LEGACY_EDGE_RUNTIME_DENO1_IMAGE = "supabase/edge-runtime:v1.68.4"; @@ -26,8 +25,9 @@ function replaceImageTag(image: string, tag: string): string { /** * Resolve the edge-runtime image, honoring the pinned tag in * `supabase/.temp/edge-runtime-version` and the `deno_version` selector - * (default 2 → v1.74.2; 1 → `deno1`). The version pin is applied first (Go's - * `Load`), then `deno_version = 1` overrides to `deno1` (Go's validate pass). + * (default 2 → Dockerfile image; 1 → `deno1`). The version pin is applied first + * (Go's `Load`), then `deno_version = 1` overrides to `deno1` (Go's validate + * pass). */ export const legacyResolveEdgeRuntimeImage = Effect.fnUntraced(function* ( fs: FileSystem.FileSystem, diff --git a/apps/cli/src/legacy/shared/legacy-edge-runtime-image.unit.test.ts b/apps/cli/src/legacy/shared/legacy-edge-runtime-image.unit.test.ts index 9b15eecf24..65a850247b 100644 --- a/apps/cli/src/legacy/shared/legacy-edge-runtime-image.unit.test.ts +++ b/apps/cli/src/legacy/shared/legacy-edge-runtime-image.unit.test.ts @@ -5,6 +5,7 @@ import { BunServices } from "@effect/platform-bun"; import { describe, expect, it } from "@effect/vitest"; import { Effect, FileSystem, Path } from "effect"; +import { dockerfileServiceImage } from "../../shared/services/dockerfile-images.ts"; import { legacyResolveEdgeRuntimeImage } from "./legacy-edge-runtime-image.ts"; const resolve = (workdir: string, denoVersion: number) => @@ -15,12 +16,12 @@ const resolve = (workdir: string, denoVersion: number) => }).pipe(Effect.provide(BunServices.layer)); describe("legacyResolveEdgeRuntimeImage", () => { - it.effect("returns the default v1.74.2 image when nothing is pinned", () => { + it.effect("returns the edge-runtime image from the Dockerfile when nothing is pinned", () => { const dir = mkdtempSync(join(tmpdir(), "legacy-edge-img-")); return resolve(dir, 2).pipe( Effect.tap((image) => Effect.sync(() => { - expect(image).toBe("supabase/edge-runtime:v1.74.2"); + expect(image).toBe(dockerfileServiceImage("edgeruntime")); rmSync(dir, { recursive: true, force: true }); }), ), diff --git a/apps/cli/src/shared/functions/serve.ts b/apps/cli/src/shared/functions/serve.ts index a4aab1f19f..d232737149 100644 --- a/apps/cli/src/shared/functions/serve.ts +++ b/apps/cli/src/shared/functions/serve.ts @@ -46,6 +46,7 @@ import { type FileWatchEvent, } from "../runtime/file-watcher.service.ts"; import { ProcessControl } from "../runtime/process-control.service.ts"; +import { dockerfileServiceImage } from "../services/dockerfile-images.ts"; import { buildDockerBinds, discoverFunctionSlugs, @@ -95,7 +96,7 @@ const ignoredDirNames = new Set([ ]); const dockerLogRetryDelay = Duration.millis(400); const dockerLogDiagnosticTailLength = 4_096; -const legacyDefaultEdgeRuntimeVersion = "v1.74.2"; +const legacyDefaultEdgeRuntimeImage = dockerfileServiceImage("edgeruntime"); const defaultSupabaseEnv = "development"; const serveMainContainerPath = "/root/index.ts"; const shellVariableNamePattern = /^[A-Za-z_][A-Za-z0-9_]*$/; @@ -1748,14 +1749,15 @@ const startEdgeRuntime = Effect.fnUntraced(function* (input: { ).pipe( Effect.map((value) => value.trim()), Effect.catch(() => Effect.succeed("")), - Effect.map((value) => value || legacyDefaultEdgeRuntimeVersion), ); const edgeRuntimeVersion = yield* resolveEdgeRuntimeVersion( resolved.edgeRuntime.deno_version, edgeRuntimeVersionOverride, ); const image = legacyGetRegistryImageUrl( - `supabase/edge-runtime:${edgeRuntimeImageTag(edgeRuntimeVersion)}`, + edgeRuntimeVersion.length === 0 + ? legacyDefaultEdgeRuntimeImage + : `supabase/edge-runtime:${edgeRuntimeImageTag(edgeRuntimeVersion)}`, ); yield* assertLocalDbRunning(projectId); diff --git a/packages/stack/src/versions.ts b/packages/stack/src/versions.ts index f54f44c5db..6a9c4a1a9c 100644 --- a/packages/stack/src/versions.ts +++ b/packages/stack/src/versions.ts @@ -53,16 +53,16 @@ export interface VersionManifest { export const DEFAULT_VERSIONS: VersionManifest = { postgres: "17.6.1.158", - postgrest: "14.15", - auth: "2.194.0", - "edge-runtime": "1.74.2", - realtime: "2.120.3", - storage: "1.67.20", + postgrest: "14.16", + auth: "2.195.0", + "edge-runtime": "1.74.3", + realtime: "2.123.1", + storage: "1.68.1", imgproxy: "v3.8.0", mailpit: "v1.30.2", pgmeta: "0.96.6", - studio: "2026.07.27-sha-cbb076d", - analytics: "1.47.1", + studio: "2026.08.03-sha-022b374", + analytics: "1.49.2", vector: "0.53.0-alpine", pooler: "2.9.7", } as const;