Builds
Railway uses Cloudnative Buildpacks to attempt to build and deploy with zero configuration. Currently, we support the following languages out of the box
If you have a language that you want us to support, please don't hesitate to reach out and let us know.
We will also build using a Dockerfile if found at the project root.
Procfile
If your project use buildpacks, you specify the start command with a Procfile. A Procfile is in the format of
When Railway deploys your build, the process listed in the file will be started by running the respective command. Note: Railway can only execute one process per Procfile.
Note: some buildpacks specify a default start command
Web process
HTTP servers should use the web
process type. This process should listen on
the PORT environment variable and will receive
HTTP traffic. For example,
Paketo Buildpacks
By default Railway will attempt to build your app with the heroku/buildpacks:20 builder, which is based on how Heroku builds apps. However, you can opt-in to build your app with the Paketo buildpacks. Paketo has support for
- NodeJS
- Go
- PHP
- Ruby
- Java
- .NET
- NGINX
- Python
Custom Buildpacks
By default, the appropriate buildpacks are selected by inspecting the source files of a project. For more control, a project.toml file can be used to achieve a more custom setup.
Here is an example project.toml
file that forces a NodeJS project to use Yarn
instead of NPM.
Nixpacks
Nixpacks is an opensource, drop in replacement for the cloud native buildpacks
Once in Priority Boarding, you should be able to enable it inside of Service -> Settings -> Builder
Issues? Report them on GitHub
Edit this file on GitHub