Multiple Fly Applications
This guide discusses how to manage multiple Fly applications within a Rails projects. This is useful for Rails projects that need to run other services, like running a pool of Puppeteer servers that your Rails app calls to take screenshots of web pages.
What Is a Fly Application?
Your Rails application is a Fly application, which means it has the following few things:
fly.tomlfile in the root directory
Dockerfilein the root directory that describes the image
- A "server" running on Fly's infrastructure.
So how do you spin up multiple Fly applications for a single Rails project?
Creating a Fly Application Within a Fly Application
The important thing about creating multiple Fly applications within a project is keeping them organized. For our example, we'll setup a Redis server application and keep it in the
./fly/applications folder within our project repo.
Let's get started by running the following commands:
mkdir -p fly/applications/redis cd fly/applications/redis
From inside the
fly/applications/redis folder, run:
fly launch --image flyio/redis:6.2.6 --no-deploy --name my-project-name-redis
This command will create a
fly.toml file that can be further configured for your application's needs.
Next, deploy the application:
Accessing From the Root Application
Fly creates DNS hosts for each of your applications that are not surprising.
In the future, when it's time to deploy updates to your Fly application within a Fly application, run:
cd fly/application/redis fly deploy