Bring a Dockerfile or an image. We run it.
If your repo has a Dockerfile at the root, it always wins: we build it as-is and read the port from the first EXPOSE line. That covers Go, Rust, Java, PHP, Ruby, Elixir or anything else. You can also skip the build entirely and deploy a public image such as nginx:1.27-alpine or ghcr.io/org/app:1.4.0.
Free staging (0.25 vCPU · 256 MB · 1 GB) · Live from ₹118.50/month, billed hourly · No servers to manage
Sensible Docker defaults, no config files.
When you connect the repository we read it and fill in the build settings below. Every value can be changed in the app’s settings — see build settings.
- Runtime
- Your Dockerfile (or a public image)
- Port
- First EXPOSE line, else 3000
- Build command
- docker build with your Dockerfile (images are pulled, not built)
- Start command
- Your image's CMD / ENTRYPOINT
Deploy Docker in minutes.
- 1
Add EXPOSE
Put
EXPOSE 8080(or your port) in the Dockerfile. Without it we assume 3000 and show a note, and the release fails if nothing answers there. - 2
Point at a different Dockerfile if needed
Set Dockerfile path, for example
docker/Dockerfile.prod, and Folder with your app for the build context in a monorepo. - 3
Or deploy a public image
Choose Docker image in New app and enter the full name with a tag. The image must be public; we
docker pullit. - 4
Set variables and health check
Add runtime config in the Environment variables tab and set Health check path to a route that answers quickly.
- 5
Deploy and go live
Watch the build or pull in the Deployments tab, test the staging address, then click Go live.
Running Docker well in production.
Staging is free
Every app gets a staging copy in a free, lightweight Docker container (0.25 vCPU · 256 MB · 1 GB). It pauses after 7 days without a deploy — one click starts it again.
- Use multi-stage builds to keep the final image small; builds have a 30-minute limit and smaller images release faster.
- Listen on
0.0.0.0, notlocalhost. We also setPORT, so reading it from the environment keeps the Dockerfile portable. - Write persistent files to
/datainside the container. Do not rely onVOLUMElines for durability. - Containers run with a process limit of 512 and no-new-privileges, so avoid setuid tricks and run as a normal user where you can.
- Image sources do not auto-deploy: click Deploy to pull and release again. Prefer explicit version tags over
latestso you always know which version is running. - We keep your last five builds per app, so rollback to any of them takes seconds with no rebuild.
Trigger
git push
Promote
same image
Rollback
1 click
Docker questions.
Can I deploy a private registry image?
No, image sources must be public. For private code, connect GitHub and let us build from your Dockerfile instead.
Does a Dockerfile override Node or Python detection?
Yes. A `Dockerfile` in the root folder is always used first, even if `package.json` or `requirements.txt` exist.
Can I run docker-compose?
No. Each app runs one container. Split services into separate apps and use a managed database for data.
How is a Docker app priced?
Like any app: ₹300 per vCPU, ₹150 per GB of memory and ₹6 per GB of storage per month, billed hourly. Staging is free. See [pricing](/pricing).
Ship your Docker app today.
Create an account, connect your repository and get a free staging copy plus a live HTTPS address in minutes.