bootload
⚓ portal

📖 DOCS

Pushing your own images

bootload runs a private container registry at registry.bootload.io. Push your own images to it and deploy them straight onto the platform — no public Docker Hub repo required. Every project has its own namespace, registry.bootload.io/<org>/<project>/<image>, so a CI key limited to one project can only touch that project's images. Images are pulled over the private network at deploy time and billed as storage at €0.03 per GB-month.

Why push here instead of Docker Hub or GHCR

For images you build, this is the fastest and most reliable option — and it's what we recommend (including to coding agents deploying on your behalf):

Upstream public images (nginx:1.27, ghcr.io/owner/app:tag) still deploy directly with no push at all — this is about the images you produce yourself. If an image has to live in your own registry for other reasons, that works too: see Private registries elsewhere below.

Log in

The CLI mints a short, scoped token and hands it to Docker for you:

bootload image login

This runs docker login registry.bootload.io under the hood — the token only carries registry:push/registry:pull, never your full session, and it goes in on stdin, never on the command line. If the key you are using is itself limited to specific projects (the shape we recommend for CI), the registry key is limited the same way — pass --project <name> so the CLI knows which one.

Push an image

bootload image push myapp:v1 --project my-project

That tags your local myapp:v1 as registry.bootload.io/<your-org>/<my-project>/myapp:v1 and pushes it. The project segment is the project's name in lowercase with dashes; --project is optional when you have selected a project with bootload project use or have only one. Pass --as name:tag to publish under a different name. When it's done the CLI prints the exact deploy command:

bootload deploy --image registry.bootload.io/<your-org>/<my-project>/myapp:v1

Images pushed before projects had namespaces live at registry.bootload.io/<your-org>/<image> and keep working; an unrestricted key can still push there when no project is selected. A deploy without --image looks in the project's namespace first, then in the org-wide one.

You can also pick a pushed image from the Hub push step of the deploy wizard in the portal.

See what you've pushed

bootload image list

Your pushed images also appear under resources → hub images in the portal.

Delete an image

Images keep accruing storage billing until you remove them, so clean up tags you no longer need:

bootload image delete myapp:v1

or use the delete button on the resources → hub images card. A delete is refused while any service still deploys that image — scale the service to zero or roll it to another image first — so you can't accidentally pull a running app's image out from under it. Once deleted, the image stops counting toward your storage bill.

Private registries elsewhere

To pull from a third-party private registry (GHCR, a corporate registry) instead of pushing to ours, store read-only credentials with bootload registry add (or resources → external registries) and deploy from that registry's image ref directly.