Early look: "fly launch"

Our CLI has always been good at deploying projects with a Dockerfile. The problem is, we don’t really want you to have to think about Dockerfiles until you really, really need to do something special.

So we’ve shipped a new launch command. If you change to a directory without a Dockerfile, then run fly launch, you’ll see something like this:

This detects that I’m deploying an Elixir Phoenix app, asks me to set the value of SECRET_KEY_BASE since most of those apps need that secret to run, and then builds + deploys.

This should work out of the box for most of these apps:

  • Ruby
  • Elixir
  • Node
  • Go

And anything with a Dockerfile. It’s relatively simple to add more app types to our source detector, so if there’s something else you want to try, we can add it pretty quickly.

You’ll notice that the buildpacks/builders are quite large. If you’re running docker locally, pulling the base layers down the first time will be relatively slow, as will your first deploy of a given app. We’re working on optimizing this, we have two things we want to try:

  • We can precache these layers in remote builders, so when you aren’t running Docker you’ll never notice how large they are
  • Marking layers “public” in our registry. Right now, apps in the same organization share layers. We’re going to make “blessed” images available for every app to share, so sometime in the future when you push one of these big honkin’ apps, you’ll only need to push the diff, even on first deploy

We’re very interested in how well this works for apps in the wild. So give it a try and see how it goes.