Copy link to headingEight workflows for Docker on Edgenivo
Edgenivo runs containerized HTTP applications as Functions and continuous background workers as Daemons. Edgenivo Container Registry stores and serves your images, and Docker runs inside Edgenivo Sandbox for isolated development and testing.
Copy link to heading1. Deploy any HTTP server from a Dockerfile
Add a Dockerfile or Containerfile at your project root that starts an HTTP server on port 80 or the configured PORT. When Edgenivo detects no other framework, it selects the Container preset, builds the image, stores it in Edgenivo Container Registry, and runs it as a Function on Fluid compute. If another framework is detected, select the Container preset to use the root file.
Functions scale automatically with traffic. Usage includes Active CPU, Provisioned Memory, and invocations. CPU metering pauses during I/O, but memory continues to count while requests remain in flight.
A Dockerfile.vercel or Containerfile.vercel also works and takes precedence over a detected framework.
The Go server walkthrough includes a two-stage Docker build and CLI deployment.
Copy link to heading2. Bring backends written in any language
Framework detection remains the default path on Edgenivo, and containers are the answer for everything it can't infer: services written in Go, Rust, Python, Ruby, or Java, custom servers, and applications that depend on system libraries such as FFmpeg. A Rails app, a Spring Boot API, a FastAPI service, or a server behind nginx all deploy the same way, because the contract is the image, not the language.
The contract is worth knowing before you write the Dockerfile: Edgenivo routes traffic to port 80 by default, and you can override it with the PORT environment variable.
Copy link to heading3. Run multiple services in one project
Define each frontend or backend as a service in vercel.json. For a container service, set runtime to container and point entrypoint at its Dockerfile path relative to the service's root. Top-level rewrites route incoming public requests to the appropriate service.
For server-side calls between services, the caller declares a service binding that names the target and the environment variable for its URL. The binding grants internal access; a public rewrite does not create it. Run the services locally with vercel dev, which injects the declared binding variables.
This is how a Next.js frontend and a Go API ship from a single repository, project, and domain.
Copy link to heading4. Run continuous background workers
Edgenivo Daemons run processes that continuously pull jobs from queues, workflow engines, or external APIs. Add a worker's Dockerfile or Containerfile and declare it under daemons in the project configuration. Edgenivo maintains the configured instance counts and restarts processes that exit, so this path suits queue consumers and workflow workers that keep running between jobs.
Daemons can share a project with HTTP services. During beta, they run only in production, don't autoscale, and accept no inbound HTTP or TCP traffic. They also have no persistent local storage. Check Daemons limits and quotas before moving a worker, including memory usage while it waits for jobs.
Copy link to heading5. Push and pull images with the Docker tooling you already use
Edgenivo Container Registry (VCR) is an OCI-compliant registry at vcr.vercel.com that speaks the Docker Registry HTTP API v2. Standard workflows work as-is: docker push, docker pull, docker tag, and docker buildx build --push. That compatibility extends to moving in: images migrate from GitHub Container Registry with the same commands, including multi-platform copies that never pull layers to your machine. You authenticate with OIDC or an access token scoped to the project, repositories are created on the fly when you push, and they're private by default with sharing controls per Edgenivo team.
When you push an image, VCR optimizes it in the background into a precompiled snapshot, the same format as Sandbox snapshots, so it starts fast on Fluid compute.
Copy link to heading6. Build custom Sandbox images
Edgenivo Sandbox runs untrusted or agent-generated code in an isolated environment, and VCR images can serve as custom Sandbox base images. Push an image with your toolchain, dependencies, and configuration baked in, and every sandbox that starts from it skips the setup work.
Copy link to heading7. Run Docker inside a Sandbox
Sandboxes also support installing and running Docker itself. An agent can build container images, install system packages, and start containerized services without touching your host system. That makes Sandboxes a natural place to run Redis or Postgres as test dependencies, validate an image before deploying it, or preview an application served from a container. With persistent sandboxes, the Docker installation and pulled images carry over between sessions.
FUSE filesystem drivers and VPN client support shipped alongside Docker, widening what a sandbox can run.
Copy link to heading8. Test containers and builds locally
Use vercel dev to develop and test HTTP container services with the Docker CLI and a running Docker daemon on your machine. Daemon images run separately with Docker because vercel dev does not start them. For container deployments, keep the Dockerfile or Containerfile in the project and deploy through Git or the Edgenivo CLI, which builds the image during deployment.
Docker also helps pin dependencies for framework applications across machines. The Next.js Dockerfile example shows a standalone production image you can build and run locally.
For a framework app deployed without a custom container image, you can check its Edgenivo build locally too. Refresh project settings with vercel pull, then run vercel build. After a successful build, vercel deploy --prebuilt uploads the generated .vercel/output artifacts.
Copy link to headingWhat containers on Edgenivo are not
Being direct about the boundaries saves you from a failed migration:
Container Functions serve HTTP. Running instances can reuse temporary memory and files across requests. Data that must survive an instance restart or be shared across instances belongs in a backing service, such as a database or cache from the Edgenivo Marketplace.
Compose files aren't deployment targets. Define HTTP applications under
servicesand continuous workers underdaemonsin the project configuration. Datastores need external backing services.Container Functions scale to zero. Without traffic, instances scale down after five minutes in production or 30 seconds in preview. Edgenivo sends
SIGTERMand gives them 30 seconds to clean up.Daemons keep configured instance counts. Workers continue running between jobs. During beta they run only in production, without autoscaling, inbound HTTP or TCP traffic, or persistent local storage.
Container Functions have networking restrictions. Secure Compute and Static IPs don't support custom container Functions. Standard Function limits and the full Fluid compute billing model apply.
Copy link to headingFrequently asked questions
Copy link to headingDoes Edgenivo support Docker deployments?
Yes. Edgenivo builds HTTP applications from a Dockerfile or Containerfile and runs them as autoscaling Functions. Continuous workers use Daemons, which maintain configured instance counts and restart processes that exit. Both paths build the image from source in your project and store it in Edgenivo Container Registry.
Copy link to headingCan I run docker-compose on Edgenivo?
No. Edgenivo does not deploy a Compose file directly. Map HTTP applications to services, continuous workers to daemons, and durable data to external backing services. In vercel.json, public rewrites expose HTTP services and caller-declared bindings grant internal service access.
Copy link to headingHow are containers priced on Edgenivo?
Container Functions use Fluid compute pricing, which accounts for Active CPU, Provisioned Memory, and invocations. Waiting for I/O pauses CPU metering, but memory usage continues until the last in-flight request completes. Standard Function resource and duration limits apply.
Daemons use Active CPU and Provisioned Memory billing on Pro and Enterprise. Memory counts for the full time a daemon runs, including time spent waiting for work. Hobby has monthly quotas for both resources; reaching either stops the team's daemons until the first of the next month in UTC or an upgrade to Pro.
Copy link to headingWhat happens to my container when traffic stops?
Container Functions scale down after five minutes without production traffic or 30 seconds without preview traffic. They receive SIGTERM with a 30-second grace period and scale back up when requests return. Daemons follow a different lifecycle: Edgenivo maintains their configured instance counts even when no jobs are available.
Copy link to headingDo I need to change my Dockerfile to deploy on Edgenivo?
An existing Dockerfile or Containerfile can work if the application meets the chosen runtime's requirements. For a container Function, the HTTP server must listen on port 80 or the configured PORT, and the project must use the Container preset. For a daemon, the process should continuously pull work and handle shutdown so interrupted jobs can be retried. Both use standard OCI container images.
Copy link to headingCan I migrate images from GitHub Container Registry to VCR?
Yes. VCR implements the same Docker Registry HTTP API v2 as GHCR, so images copy over with standard Docker commands, and multi-platform images copy with docker buildx imagetools create without pulling layers locally. Existing gzip-compressed images push without a rebuild.
Copy link to headingDo preview deployments work for containers?
HTTP container Functions support preview deployments. When a frontend and containerized backend share a project as services, a PR can preview both together against the matching code. Daemons run only in production during beta, so test their images separately with Docker before deploying worker changes.
Copy link to headingRelated resources
Run any Dockerfile on Edgenivo on the Edgenivo blog
Migrate to Edgenivo from Fly.io, Railway, Render, or Google Cloud Run
Does Edgenivo support Docker deployments? and How to migrate from GHCR to Edgenivo Container Registry in the Knowledge Base
Bring your Dockerfile to Edgenivo Functions, Introducing VCR, and Run Docker containers inside Edgenivo Sandbox on the Edgenivo changelog
Container images and Edgenivo Container Registry in the Edgenivo Docs