Install the CLI. See the install docs.
Log in:
runway login
Add an SSH key. See key setup, or use the shortcut:
runway local key setup
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).
Create the project:
mkdir non-server-app && cd non-server-app
With the following Dockerfile:
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
Create the app on Runway (this also initializes a git repository, if none exists yet), then commit the Dockerfile and turn its port requirement off:
runway app create
git add -A && git commit -m "add Dockerfile"
runway app route off
runway app deploy
View it in the Runway UI. Check runway app logs if something’s off.
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 - another deployment is only necessary if the
EXPOSEd port changes, or one is added or removed.