Fly.io transforms containers into micro-VMs that run on their hardware in cities close to your users.
Free tier
3 shared VMs, 160GB outbound transfer
Usage-based · 30+ regions
Container hosting runs your Docker images in the cloud — full control over the runtime, with the platform handling networking, scaling and deploys.
Container hosting runs the exact Docker image you build, giving you the most control of any option in this directory. You define the runtime, system packages, processes and ports; the platform provides networking, scaling, TLS and a deploy pipeline. That makes it the right home for anything that doesn’t fit a framework-shaped PaaS — custom runtimes, single-binary apps like PocketBase, or services you’ve already containerized. Fly.io is a common pick, running your containers close to users across many regions.
The key consideration for stateful workloads is persistent storage. A container’s filesystem is ephemeral by default, so anything you want to survive a restart or redeploy — a database file, uploaded media — needs a persistent volume attached. This is the single most common mistake when self-hosting apps like PocketBase: without a volume, the data resets every deploy. If your app holds state, confirm the free tier includes volumes before committing to it.
When comparing free tiers, look at the compute allowance (hours, RAM, CPU per instance), persistent volume availability and size, the sleep/scale-to-zero policy, and how many regions you can deploy to. Also check whether the free tier is a perpetual allowance or a depleting credit. Container hosting rewards you with flexibility, but that flexibility means the platform makes fewer decisions for you — so the operational details matter more than they would on a static host.
Fly.io transforms containers into micro-VMs that run on their hardware in cities close to your users.
Free tier
3 shared VMs, 160GB outbound transfer
Usage-based · 30+ regions
A PaaS builds your app from source with opinionated defaults; container hosting runs the exact image you define in a Dockerfile, giving you full control of the runtime, system packages and processes. Choose containers when you need that control or already have an image.
Yes, if the platform offers persistent volumes — without one, your data is wiped on every restart or redeploy. Projects like PocketBase rely on this, so attaching a volume is essential for any stateful container.
To keep free tiers viable, some platforms pause idle containers and resume them on the next request, adding a cold-start delay. Check the policy if you need an always-on service such as a public API or a bot that must respond instantly.