A practical guide
The easiest way to deploy your app.
Take your Docker container from your laptop to a secure, public HTTPS URL in three commands. No Kubernetes, no YAML, no DevOps team. The examples use the bootload CLI, but the same build → authenticate → deploy flow works anywhere.
# 1 · build your image $ docker build -t myapp . # 2 · authenticate with a host $ bootload login --email you@example.com # 3 · deploy → get an HTTPS URL $ bootload deploy --image myapp --port 3000:http 🔒 issuing SSL certificate done live at https://myapp-4f2a.bootload.io
Before you start
What you'll need
Three things, all free to get going.
Any app with a Dockerfile, or an image you already have. If it listens on a port, it can be deployed.
The Docker CLI, locally, to build and test the image. check with docker --version
An account with a container host, plus its CLI. These examples use bootload. Install with one line, then sign up over the CLI or in the browser. ~5 minutes · see Getting started
Quick start
From a Dockerfile to a live, SSL'd URL
Follow these in order. Everything after step 3 is optional polish.
Build and test your image locally
Make sure the container actually runs and serves on a port before you ship it.
Install the CLI, create an account & authenticate
Install the host CLI (curl -fsSL https://my.bootload.io/v1/cli/install.sh | sh). Then sign up over the CLI with bootload signup, or start in the browser at my.bootload.io. bootload login stores a token locally; add a little credit so deploys can run. Full walkthrough: Getting started.
Deploy and get your URL
One command boots an isolated VM, issues a TLS certificate, and returns an https:// URL. Map your container's port with --port.
Point your own domain at it (optional)
Add a custom domain; the host prints a DNS record and issues SSL automatically once it resolves. See Custom domains.
# install the host CLI $ curl -fsSL https://my.bootload.io/v1/cli/install.sh | sh $ docker build -t myapp . $ docker run --rm -p 3000:3000 myapp # test it $ bootload signup --email you@example.com → confirm via the link in your inbox $ bootload login --email you@example.com $ bootload wallet topup --amount 10
$ bootload deploy --image myapp \ --port 3000:http --name myapp booting VM ...... done · tls issued live at https://myapp-4f2a.bootload.io $ bootload domain add app.example.com add this DNS record, then SSL is automatic → CNAME app myapp-4f2a.bootload.io
Going further
The handful of commands you'll actually reuse
Persist data
Attach an encrypted volume so state survives restarts: volume create data --size 5, then deploy with --volume data:/var/lib. Volumes & backups →
Secrets & private images
Keep config out of the image with write-only secrets (secret set), and pull from the host registry or your own (image push, registry add). Pushing your own images →
Operate & roll back
Grow with scale --replicas N, pause and stop paying with --replicas 0, watch logs -f / metrics / status, and rollback any deploy.
Why this is secure
"Easy" and "secure" aren't a trade-off here
Each container runs in its own lightweight VM: a real boundary, not a shared kernel with neighbors.
Every route gets HTTPS automatically. Custom domains are verified by DNS and certificates renew on their own.
Credentials go in and can't be read back out, so a leaked terminal history can't leak your secrets.
Automate with an agent
An even easier way: let an agent deploy it.
The same three-command flow is deterministic and fully documented, so it's easy to hand off to an AI coding agent. Drop in the skill below and your agent can build, deploy, wire SSL, and report the live URL on its own, reading the real docs and CLI reference as it goes.
# you ask the agent: "deploy this app on api.acme.dev" ▸ reading the CLI docs ▸ docker build · bootload login ▸ bootload deploy --image acme/api \ --port 8080:http --name api ✓ live https://api-7c1d.bootload.io ✓ tls issued · status healthy (1/1)
The skill
An agent skill for deploying containers
A skill is a small Markdown file (SKILL.md) with frontmatter that an AI coding agent loads on demand. It teaches your agent the reference docs, the command contract, and a safe deploy loop. It works with any agent that understands skills:
- Claude Code
- Cursor
- Codex CLI
- Gemini CLI
- GitHub Copilot
- OpenCode
- Windsurf
- …and other agentic coding tools
Save it where your agent looks for skills — for Claude Code that's ~/.claude/skills/container-deploy/SKILL.md (global) or .claude/skills/… in your repo.
--- name: container-deploy description: Deploy a Docker container to a secure HTTPS URL on an isolated VM. Use when the user wants to ship/host/deploy a container, add a custom domain, scale a service, or check a live deployment. --- # container-deploy Build a Docker image and deploy it to a public, SSL'd URL. These examples use the bootload CLI as the host. ## Reference docs — read before acting - Guides: https://bootload.io/docs/ - Getting started: https://bootload.io/docs/getting-started/ - Custom domains: https://bootload.io/docs/custom-domains/ - CLI reference: https://bootload.io/docs/cli/ (source of truth for flags) Fetch the CLI page first; never guess a flag. ## Install the CLI `curl …/v1/cli/install.sh | sh` · `bootload version` ## Account `signup` / `login` / `wallet topup` (real money) ## Deploy loop `docker build` → `bootload deploy` → `status` → report URL ## Custom domain `domain add <d>` → add DNS record → automatic TLS ## Operate `logs · metrics · scale --replicas 0 · rollback` ## Guardrails confirm image+port · wallet check · secrets write-only # full file → "View / download" link above
Install
Add the skill to your agent
Two minutes: download SKILL.md into your skills folder, then just ask.
$ mkdir -p ~/.claude/skills/container-deploy # use the Download button above, or curl it: $ curl -o ~/.claude/skills/container-deploy/SKILL.md \ https://dockerdeploy.com/skills/container-deploy/SKILL.md
Save the file
Put SKILL.md under ~/.claude/skills/container-deploy/ (or wherever your agent loads skills), or .claude/skills/ inside a repo.
Just ask
“Deploy this container on api.acme.dev.” Your agent matches the skill by its description and follows the deploy loop.
Let it report back
The agent confirms image & port, deploys, waits for healthy + TLS, and returns the live https:// URL.