Runway
Runway is built and operated in the EU!

Multi-process

First steps

Many apps are a single web server, and Runway runs that for you without any configuration. Some apps need more: a migration step that runs before new code serves traffic, or a background worker that consumes a queue. Runway handles this with a Procfile.

The Procfile

A Procfile is a file at the root of your repository. Each line declares one process:

Procfile
<process type>: <command>

Process types

Runway supports web, init, and worker process types:

web is only automatic without a Procfile

When there is no Procfile, Runway starts your app as a single web process, with no command-line arguments. This is why most apps need no Procfile at all.

As soon as a Procfile exists, it defines the complete list of processes. Nothing is added implicitly. If you add a Procfile for a worker or init process, you must also declare web: yourself, or the app has no web process and the build fails validation.

Procfile
web: my-app --server
init: my-app --migrate
worker: my-app --consume-queue

It is sometimes not trivial to figure out what command to use as the web process - see the language-specific guides for details.

How the processes run

All processes run from the same image that Runway builds, and share the same configuration you set with runway app config set. Each process runs in its own environment, though, and cannot share local memory with the others.

To inspect what is running, and to open a shell in the worker container:

runway app ps       # show running processes
runway app exec -w  # open a shell in the worker container
runway app logs     # logs of all processes

Language guides

The details of the web command, and how extra binaries or scripts get built, depend on the language: