Non-HTTP services, Non-Servers, Background Commands

Deployment of apps that are not network servers #

runway usually enforces that apps EXPOSE a port (and listen on that port).

That can be switched off via runway app route off (and switched back on via runway app route on).

Example #

With the following Dockerfile in a git repository:

FROM alpine
RUN addgroup --gid 1001 mygroup && \
    adduser -D --ingroup mygroup --uid 1001 myuser
USER 1001:1001
CMD sleep infinity # or something a bit more useful, in practice


  • runway app create
  • runway app route off
  • followed by runway app deploy

The app should then deploy and start.

As with any other app, runway app exec sh can be used to get an interactive shell on the container, if necessary.

runway app route off/on can also be used to quickly cut (and re-establish) network traffic to a normal runway app.

That updates the app directly - redeployments are only necessary if the EXPOSEd port changes, or one is added or removed.