Deploy your framework on Bahriya

Whatever you build with, if it runs in a container it runs on Bahriya. There is no framework-specific runtime to learn and no per-language buildpack to configure. You package your application as a container image, tell Bahriya which port it listens on and which regions to run in, and the platform provisions it with automatic TLS, a public hostname, and optional autoscaling.

Updated 3 Aug 20261 min read

Whatever you build with, if it runs in a container it runs on Bahriya. There is no framework-specific runtime to learn and no per-language buildpack to configure. You package your application as a container image, tell Bahriya which port it listens on and which regions to run in, and the platform provisions it with automatic TLS, a public hostname, and optional autoscaling.

That means the deploy flow is the same for a Node.js API, a Next.js site, a Python service, or a static bundle served by nginx. Only two things really change between stacks: the Dockerfile that builds your image, and the port your application listens on.

The common shape

Every quickstart below follows the same pattern:

  1. Write a Dockerfile that builds and runs your application.
  2. Make sure your process binds to 0.0.0.0 on a known port and logs to standard output.
  3. Deploy it as an HTTP container, either from the Console or with the Reis CLI, setting the port to match your framework's default.

If your stack is not listed, the Deploy any Docker image guide covers the general case and works for any language.

Pick your stack

  • Node.js and Express — a typical API on port 3000.
  • Next.js — server-rendered React with standalone output on port 3000.
  • Static sites — Vite, Create React App, or Astro output served by nginx on port 80.
  • Any Docker image — the fallback for any language or framework.

Next steps