Skip to main content
Getting an application running on Fly.io is essentially working out how to package it as a deployable image. Once packaged, it can be deployed to the Fly.io platform. In this guide we’ll learn how to deploy a Rocket application on Fly.io. Rocket is a web framework for Rust that makes it simple to write fast, type-safe, secure web applications with incredible usability, productivity and performance. Launching a Rocket app on Fly.io is painless! With the help of the cargo chef, we get great build times and small images.

Speedrun

First, install flyctl, the Fly.io CLI, and sign up to Fly.io if you haven’t already. The fastest way to get a basic Rocket server on Fly.io is to use our rocket template:

Deploy a Rocket App from scratch

If you don’t already have an existing Rocket application, you can create one with cargo:
Then we have to add the rocket dependency to the project:
Now, let’s create a simple app in src/main.rs:
This will display a “Hello from fly.io!” message when you visit the root URL. Take note that we serve the app on host 127.0.0.1 and port 8000, these are the defaults for rocket. When deploying the app these defaults will be overridden using environment variables which you can find in the fly.toml. We can confirm everything works fine by running cargo run and checking out http://localhost:8000. And with that you can deploy the app!
This will generate a fly.toml file with the configuration for your app and a Dockerfile that uses cargo chef. Refer to the fly.toml docs for more configuration options. To deploy a new version of your app, simply run fly deploy in the project directory. You can check out the full (yet minimal) example in this GitHub repository for a reference.