ENTRYPOINT and CMD, routes your pod’s HTTPS URL to the port it exposes, and keeps
the previous version on hand for an instant rollback. No Dockerfile changes and no build step.
/dashboard/import?tab=image).
This runs images you have already built. Building a Dockerfile from your repository is not
supported yet.
What works
How your image runs
- Command. The image’s own
ENTRYPOINT+CMD, exactly as Docker would run them, in the image’sWORKDIR, as the image’sUSER(root when it sets none). - Port. We route your URL to the port the image
EXPOSEs. When it exposes several, an HTTP-ish one wins over SSH or database ports. With noEXPOSE, the app getsPORT=8080. If the app ignoresPORTand listens on a port of its own, the deploy finds that port at the end of its 2-minute wait and routes it. To pick the port yourself:--port 3000(CLI) or the Port field in the dashboard. - Environment. The image’s own
ENVvalues, thenPORTandHOST=0.0.0.0, then the variables you set (instapods env set, or the Env tab), which win over the image’s. - Data. Paths the image declares as
VOLUMEare kept in/home/instapod/dataand survive every redeploy and rollback, and they are backed up. Anything the app writes outside its volumes is replaced on the next deploy, as it would be with Docker. - Databases. A managed PostgreSQL, MySQL or Redis runs in the same pod, and the app reaches it at
127.0.0.1. Pick one when you create the pod (the Add a managed PostgreSQL database box in the dashboard) andDATABASE_URL/REDIS_URLare set for you. Added later withinstapods services add, it is not: set the URL yourself withinstapods env set. Connect over TCP; Unix sockets aren’t shared with the app. - Logs. Everything the app prints is in the Logs tab and
instapods logs <pod>. - Health. A deploy only switches over once the new version answers HTTP (it waits up to 2 minutes, for slow starters like the JVM). If it never does, the previous version keeps serving and the deploy log says why.
Redeploy, change the tag, roll back
Inside the pod
SSH and the web terminal land in the pod as usual. Your image’s files are at/opt/instapods/rootfs/current; to get a shell inside them, run
sudo chroot /opt/instapods/rootfs/current sh (if the image has a shell).
Not supported yet
- Private images that need a registry login.
- Building from a
Dockerfileordocker-compose.yml, and running several services from one. HEALTHCHECK, more than one routed port, UDP.- Anything that needs extra privileges at runtime (
--privileged,--cap-add, mounting filesystems, the Docker socket). linux/arm64-only images.