How to deploy a Docker container for free
Run a public Docker image online for free with HTTPS and no credit card. Tested steps for blitz.cloud, the image requirements, and what the free plan covers.
You can deploy a Docker container for free on blitz.cloud: create an account without a credit card, click Host something new, search Docker Hub for the image, pick a version and a name, and it runs under an HTTPS address like whoami.yourname.blitz.cloud. The free plan has no time limit and apps don't go to sleep. The catch is that the image has to be public on Docker Hub, built for amd64, and able to run without root.
What you need
- A blitz.cloud account. Sign up at beta.blitz.cloud with email, GitHub or Google, and confirm your email address. Until it is confirmed you can't create apps.
- A public image on Docker Hub. Other registries such as ghcr.io can't be picked in the dashboard yet, and private images need a login blitz.cloud doesn't have.
Will my image run?
Most failed first attempts come down to three things. You can check all of them on your own machine in a minute.
- Architecture. blitz.cloud runs on amd64 servers. Images built on an Apple Silicon Mac with a plain
docker buildare arm64-only and will not start. Build with--platform linux/amd64. - No root. Every app runs as user and group 1000 with all Linux capabilities dropped. An image that insists on root, or tries to change file ownership on startup, stops.
- A declared port. Listen on something like 8080 and declare it with
EXPOSE 8080in the Dockerfile, so blitz.cloud picks it up without you typing it.
This command runs an image roughly the way blitz.cloud does:
docker run --rm --platform linux/amd64 --user 1000:1000 --cap-drop ALL \
--security-opt no-new-privileges -p 8080:8080 yourname/your-image:1.0.0
If curl http://localhost:8080 answers, you are in good shape.
Deploy the container
- Sign in at beta.blitz.cloud. The first time, you claim your address, for example
lena. Your apps will live underlena.blitz.cloud. - Click Host something new and choose "An app that is already packaged up".
- Type the image name into Which app? and pick it from the list. Official images are marked. A repository you pushed a few minutes ago can take a while to appear in Docker Hub's search.
- Choose a Version. Tags like
latestare marked "follows new releases"; a fixed tag like1.0.0never changes. Click Continue. - The next screen shows What this app needs: the port it will be reached on, whether it needs a database, and which folders survive a restart. blitz.cloud works these out by reading the image. If the port is wrong, you can change it under Advanced settings.
- Give the app a Name and an address, then click Put it online.
You watch it go through its steps, and when it is done you get a link like https://whoami.lena.blitz.cloud. The certificate for your address is issued automatically; until it is ready, a browser can briefly show a certificate warning on a brand new account.
If nothing is ready yet, the app page says so in a sentence and shows the last lines the container printed. App status and logs explains each message.
Try it with a ready-made example
The blitz-cloud-examples repository has three small apps that follow the rules above: a Node.js API, an Astro site behind nginx, and a FastAPI app. Build one, push it to your Docker Hub account, and deploy it with the steps above:
git clone https://github.com/blitzworks-io/blitz-cloud-examples.git
cd blitz-cloud-examples/python-api
docker build --platform linux/amd64 -t yourname/blitz-example-python-api:1.0.0 -t yourname/blitz-example-python-api:latest .
docker push --all-tags yourname/blitz-example-python-api
What the free plan includes
| Free plan | |
|---|---|
| Apps | Up to 15 |
| Memory | 2 GB shared across your apps and databases |
| Storage | 10 GB |
| Databases | 1 |
| HTTPS | Automatic on every address |
| Sleep when idle | No |
| Credit card | Not needed |
A pasted image gets the small size: 128 MB of memory reserved and up to 512 MB when it needs more. That fits most APIs and small web apps. A JVM app with a big heap or anything that needs several GB of RAM is a bad fit for the free plan today. The full rules are on Limits.
When blitz.cloud is the wrong choice
If you need servers outside Europe, GPU access, private images, arm64, or deploys straight from git push today, pick something else for now. If you want a container online in Germany for nothing and don't mind pushing to Docker Hub first, it fits well.
Put your first app online today.
Free plan, no credit card, no waiting list.
Create a free account