tl;dr:
- We are working on a dashboard UI to ship customer’s GitHub repos
- It is a work in progress at very early stage, currently supporting only NodeJS repos.
- We will post updates here, in Fresh Produce.
One of the most common things folks ask is about launching apps using our dashboard. We are excited to share, that’s something we’re actively building right now!
This is still waaay early in its development life so right now, we only support deploying NodeJS apps from the dashboard!
How to use it RIGHT NOW?
If you’re eager to test it you can go to https://fly.io/dashboard/personal/new to launch a NodeJS app from your GitHub repo. We are actively working on this, and you can expect support for more runtimes/frameworks soon (it’s worth mentioning our NextJS/NuxtJS are separate from the regular NodeJS one).
If you don’t have a NodeJS app, you can also try out deploying fly-apps/ollama-open-webui, which will deploy Ollama’s web UI to Fly.io for you.
If you don’t have a GitHub account linked to your Fly account you can press a button to link them together immediately. We currently only show this UI to customers with GitHub identity attached, but we plan on adding support to customers without GH SSO on the future.
Why start with NodeJS?
Quite simple, because I understand a lot of NodeJS Fly NodeJS so our @flydotio/dockerfile
generator does a lot of the heavy lifting therefore we could focus on the UI and the behind scenes stuff for the first version.
How does this work (feel free to skip if you don’t like nerdy details)
tl;dr: Machines API, really!
When you press “Deploy” we create a machine with a Deployer Docker Image we built around flyctl that receives some envs such as DEPLOY_APP_NAME
and DEPLOY_APP_PORT
. Then we run fly launch
and fly deploy
. We are literally doing what you’d otherwise do in your computer but inside a Fly Machine.
- Create [deployer app] in a private network that only this app has access to.
- Set secrets to [deployer app]
- Create [deployer machine] inside [deployer app] using
auto_destroy
feature. - Our Elixir app Listen to logs from QuickWit via Oban to get the current state of the deployment.
- When [deployer machine] exits we check if the exit code was 0 or 1 to declare a success or failure.
As step [4] mentions, we keep listening to logs via QuickWit (our extension partner) to get the most up to date state of the deployment. That works very well for us.
What’s next for us?
Currently, our Deployer Docker Image comes along with support for NodeJS. Before this is generally available for more apps we need to add support to more runtimes such as Elixir, Ruby, Laravel etc.
Also you will be a huge part of the deciding factor on how this project goes. Your feedback will help shape this since we are very early into it, we’d love to hear from you!