Dockerfile
Commit a Dockerfile. Nodion builds that image and runs it.
On Applications → New, connect a Gitrepo and pick Dockerfile. The scan prefers this when it finds a Dockerfile. Use Buildpackswhen you want Nodion to install the runtime.
A prebuilt image skips the Git build. Push that image to a registryand deploy it. Docker Composeimport at create is experimental and is not this strategy.
What you set
- Base directory: the build context, and where the Dockerfile lives in a monorepo.
- Dockerfile name: usually
Dockerfile. The scan also listsDockerfile.*. - Ports: prefilled from TCP
EXPOSEin that file. Add or remove as needed. After create, ports live on the web process.
Change strategy, path, and base directory later in Settings. That applies on the next deploy.
What a build does
- Clones the branch.
- Uses the base directory as the build context. A
.dockerignorethere is honored..gitis never sent. - Builds the named Dockerfile. Multi-stage files work. There is no stage picker, so the default final stage is what runs.
- Pushes the image and starts the
webprocess from it.
Env vars marked Build on the Environment tab are passed as Docker build args (ARG). Runtime vars apply when the process starts, on the next deploy. Secrets stay write-only after save.
BuildKit secrets (RUN --mount=type=secret) are not wired. Put values you need at build time in those Build vars.
Listen and health
Nodion does not set PORT on a Dockerfile app. That env is for buildpacks. Bind your server to the port on the web process (from EXPOSE, or whatever you set on Processes). If that list is empty, Nodion uses the image EXPOSE, then 8080.
Listen on all interfaces, not only localhost. The image CMD / ENTRYPOINT is the default start. Override the command on the process if you need to.
Readiness is an HTTP GET to the Health check path in Settings (default /) on the web port. A 2xx or 3xx response is healthy. A Docker HEALTHCHECK in the image is ignored.
The image USER is honored. An unknown user name fails the deploy.