| Line item | AWS Fargate | Cloudflare Containers |
|---|---|---|
| Compute (vCPU + memory) | ~$85 / month | ~$25 / month |
| Load balancer (ALB / NLB) | $18 / month + LCU | $0 (included) |
| NAT gateway (for outbound) | $32 / month + data | $0 (included) |
| Egress (100 GB) | $9 / month | $0 (no egress fees) |
| Provisioning & ops overhead | VPC, IAM, task defs, security groups | Dockerfile + wrangler deploy |
| Monthly total (rough) | ~$144 + ops time | ~$25 |
Same platform, different tool. This container is deployed the same way a Worker is: one wrangler deploy command, same account, same dashboard, same bill. When the customer's team already knows Workers, Containers is a natural next step.
No infrastructure to run. There's no ECS cluster, no VPC, no NAT gateway, no ALB, no autoscaling group. The Container just runs when a request comes in and sleeps when idle. You define resource limits and instance counts, Cloudflare handles the rest.
Lift-and-shift friendly. The container is a plain Dockerfile with a Python Flask app. Any language, any binary. If your customer has an existing Docker image running on ECS or Kubernetes, it can move here without a rewrite.
Egress is $0. Data leaving the container to the internet, to R2, or back to the Worker doesn't cost bandwidth. Compare that to Fargate + NAT gateway + data transfer, which stacks charges at every layer.
When Workers can't do it. This demo runs headless Chromium via Playwright. That's a 300+ MB binary that needs a full Linux userspace. It can't run in a Worker. Containers fill exactly that gap on the same platform.