Zero downtime deployment

You mean fly secrets set ...? That’s interesting.


Wait for Fly engs to confirm this one way or the other. We need zero down-time deploys ourselves and so I use Machines but I haven’t yet moved all our prod traffic to Fly. To my untrained eye, Machines might provide this, but I haven’t yet put ours under any duress, yet.

Join me in writing a Haiku, won’t you: Write us a haiku and we'll put it on the login screen - #13 by ignoramous (:

# create a machines app
fly apps create <app-name> --machines

# then run it
fly m run
  . \
  # services.port and services.internal_port with handlers go here
  -p <443:8080/tcp:tls?> \
  --dockerfile </path/to/dockerfile?>
  --memory <256?> \
  --region <iad?> \
  --name <uniq-name?>
  -a <app-name?>

After a Machine is run once, you can clone it to other regions:

# list machines
fly m list -a <app-name>

# note down alloc-id from above, and clone like so:
fly m clone <machine-alloc-id> --config fly.toml --name <uniq-name> --region <aws>

You can also use fly deploy (once the app’s created) to deploy to all machines (but it is rough at its edges). I fixed a few issues with fly deploy and Machines, but I maintain a local-fork of it.

See also: Ephemeral fly machine? - #2 by ignoramous

Ref this Fly blog post.