Vercel Functions は、プロジェクト直下の Dockerfile.vercel(または Containerfile.vercel)から OCI 互換コンテナをビルドし、Vercel Container Registry に格納したうえで Fluid compute 上へ配備できる。Go、Rails、Spring Boot、nginx 背後の静的配信など、HTTP を話し $PORT(既定は 80)を待つサーバを、既存のプレビュー URL・ログ・ルーティング・オートスケールのまま載せたい利用者向けである。
要点は次のとおり。
- 起動条件: イメージは HTTP サーバを開き、
$PORTで待ち受ける。言語やフレームワークの自動検出は不要で、FFmpeg や Chromium などシステムライブラリが要る構成も同じ経路で扱える。 - デプロイ:
vercel deployまたは Git 連携の push でイメージをビルドし、コミットごとにプレビュー URL が付く。ローカル検証はvercel devで行い、その場合はマシン上に Docker CLI とデーモンが必要である。 - 実行特性: ビルド時に最適化した boot image を用意し、起動時はスナップショットをストリーム解凍するため、イメージ全体の取得完了を待たずにリクエスト処理を始められる。インスタンスはステートレスで、永続状態は Marketplace の DB やキャッシュなど外部に置く。
- スケールと課金: トラフィックに応じて増減し、アイドル時は縮小する。本番は 5 分、プレビューは 30 秒リクエストが無いと scale down し、終了時は
SIGTERMのあと 30 秒の猶予がある。課金は Vercel Functions と同じ Active CPU モデルで、コードが実際に CPU を使っている時間だけが対象である。 - 複数サービス: 同一プロジェクト内では
vercel.jsonのservicesとrewritesでフロントとバックエンドなど複数コンテナを振り分けられる。各サービスはentrypointに Dockerfile パスを指定する。 - 未対応: Secure Compute と Static IPs はカスタムコンテナイメージではまだ使えない。
docker
FROM golang:1.26-alpine AS build
WORKDIR /src
COPY . .
RUN go build -o /server main.go
FROM alpine:3.22
COPY --from=build /server /server
CMD ["/server"]