Deploying Apps

Build Methods

Dockerfile, Railpack, prebuilt image, or raw Compose — how each one builds and starts your app.

Every app has a build method, set on creation and changeable later from its Config tab. It controls how DeployOS turns your source into a running container.

Dockerfile (repo compose)

The default for Advanced mode when your repo has its own Dockerfile or docker-compose.yml. DeployOS builds your Dockerfile as-is and runs your Compose file, attaching the app's service to the shared edge network under an alias so the reverse proxy can reach it — without modifying the compose file you committed. This is the right choice when you already have containerization figured out and just want DeployOS to run it.

Only auto-applies when your Compose file is named docker-compose.yml. If you use docker-compose.prod.yml or similar, rename it or switch build methods.

Railpack

The default for Simple mode and for any repo without a Dockerfile. Railpack inspects your repo (Node, Next.js, Python, Go, PHP, .NET, static sites, etc.), figures out how to build and run it, and produces a container — similar to what Heroku-style buildpacks do, but running entirely on your own server via a local BuildKit instance bootstrap installs for you.

Each successful build is tagged with the deployed commit hash, and the last 3 images are kept — this is what makes instant rollback possible without a rebuild.

You may see "Nixpacks" referenced in older screens or docs — it's the predecessor to Railpack and is kept only as a legacy alias; new deploys always build with Railpack.

Prebuilt image

Point DeployOS at an existing image (Docker Hub, GHCR, your own registry) instead of building from source. Useful for apps you build in a separate CI pipeline, or third-party images you don't maintain the source for.

Raw Compose

Paste your own docker-compose.yml directly instead of pulling it from a repo. DeployOS runs it as given and still wires up the proxy route and edge network. Good for one-off stacks that don't live in a git repo at all.

Choosing one

SituationRecommended method
You have a Dockerfile alreadyDockerfile
You don't, and want zero configRailpack
You already build images in CIPrebuilt image
No repo, just a compose fileRaw Compose

Prefer to write your own Dockerfile? Ask the Dockerize Advisor

If you'd rather hand-write a Dockerfile than rely on Railpack's automatic detection, the Dockerize Advisor (Advanced mode, on the New App page) analyzes a repo on a chosen server and suggests a ready-to-use Dockerfile, a matching docker-compose.yml, and the port/health-check path it detected — copy-pasteable code blocks, not applied automatically. Useful for sniffing out a sane starting point before you commit your own Dockerfile to the repo and switch that app to the Dockerfile build method.