Skip to content
New Project

Container Images

Containerized services built from their own Dockerfiles, running as Vercel Functions behind a single domain.

DeployView Demo

Container Images Demo

A collection of containerized services running as Vercel Functions, each built from its own Dockerfile and routed through a single vercel.json. It showcases the Vercel Dockerfile runtime alongside the native Next.js runtime — nine independent services sharing one domain.

Demo

https://container-images-demo.labs.vercel.dev

Services

ServiceRouteStackDescription
web/Next.js 16, React 19, Tailwind v4Landing page linking to every service (native nextjs framework, no Dockerfile).
rust/rustRust, axum, tokioDynamic HTTP server.
go/goGo stdlib net/httpLightweight server on a distroless image.
wasm/wasmRust → WebAssembly, nginxStatic site running a Rust-compiled WASM module in the browser.
browser/browserGo, chromedp, headless ChromiumStreams live page-load status over WebSocket and returns a screenshot.
ffmpeg/ffmpegGo, ffmpegTransforms media (gif, thumbnail, mp4, mp3, waveform) with live progress over WebSocket.
doom/doomGo, Xvfb, chocolate-doom, ffmpegPlayable Doom streamed as MJPEG over WebSocket with keyboard/mouse input.
qr/qrGo, go-qrcodeStateless QR code generator with an optional centered logo.
php/phpLaravel 12, dompdfStateless PDF invoice generator.

How It Works

Each service is self-contained — it serves its own UI and its own API/WebSocket endpoints under its path prefix. There is no API gateway: vercel.json declares each service and uses rewrites to route requests by path. The web service is a static directory page; a final catch-all rewrite sends all other traffic to it.

{
"services": {
"rust": { "root": "apps/rust", "entrypoint": "Dockerfile" },
// ...other Dockerfile services
"web": { "root": "apps/web", "framework": "nextjs" }
},
"rewrites": [
{ "source": "/rust/(.*)", "destination": { "service": "rust" } },
{ "source": "/rust", "destination": { "service": "rust" } },
// ...other service routes
{ "source": "/(.*)", "destination": { "service": "web" } }
]
}

How to Use

You can choose from one of the following two methods to use this repository:

One-Click Deploy

Deploy the example using Vercel:

Clone and Deploy

git clone https://github.com/vercel/examples/tree/main/container-images/demo

Install the Vercel CLI:

npm i -g vercel

Then run the app at the root of the repository:

vercel dev
GitHub
Ownervercel
Repositoryexamples
LicenseView License
Use Cases
Starter
Stack
Container Images
Tailwind

Related Templates

Rust WebSocket

Rust WebSocket Server
Rust WebSocket thumbnail

Rust Hello World

Simple Rust serverless functions demonstrating basic HTTP handling and performance benchmarks.
Rust Hello World thumbnail

Rust Axum

A Rust web application using the Axum framework with streaming capabilities on Vercel.
Rust Axum thumbnail
DeployView Demo