Deploy a container from a plain Dockerfile
By Steven Van ·
Vercel's beta Container runtime builds a root Dockerfile or Containerfile on all plans, with Active CPU billing and no other framework detected.
A root Dockerfile or Containerfile can now be deployed on Vercel's Container runtime when no other framework is detected. Vercel selects the Container preset, builds that file, and routes all traffic to the resulting image, as set out in the Container runtime documentation.
When the Dockerfile is used
If project detection matches another framework, such as Django or Next.js, that framework still wins. To build the Dockerfile or Containerfile instead, there are two options:
- Run vercel project update --framework container (adding --yes skips the confirmation prompt).
- Set "framework": "container" in vercel.json.
A Dockerfile.vercel or Containerfile.vercel continues to win over a detected framework.
Deploying and testing
Deploy with the Vercel CLI or by pushing to a Git repository. During the build step, the image is built and pushed to Vercel Container Registry. Local testing works with vercel dev, which needs the docker CLI and a Docker daemon on the machine.
Multi-service projects still use services in vercel.json, with a per-service entrypoint pointing to each Dockerfile relative to the service's root.
Runtime behaviour
- The container must open an HTTP server. The default port is 80, and the PORT environment variable in project settings overrides it.
- Logs come from the container's stdout and stderr. They are not tied to a request, so they are broadcast to all in-flight requests of the instance.
- Instances with no traffic scale down after 5 minutes in production and 30 seconds in preview. The container gets a SIGTERM with a 30-second grace period.
Availability and pricing
The Container runtime is in beta on all plans. It runs on Vercel Functions and is billed with Active CPU pricing, so CPU is charged only while code is actively running, not while waiting on I/O or sleeping. The same Vercel Functions limits apply. Secure Compute and Static IPs are not yet supported with custom container images.