Skills Development Fly.io Workflow: Deploy and Scale Apps

Fly.io Workflow: Deploy and Scale Apps

v20260423
flyio-core-workflow-a
A comprehensive guide to managing the full application lifecycle on Fly.io. This workflow covers deploying applications, configuring the environment using fly.toml, managing sensitive secrets, scaling resources across multiple regions, and controlling the application's operational state (including suspension and destruction). Ideal for setting up production-grade, resilient cloud services.
Get Skill
320 downloads
Overview

Fly.io Core Workflow A: Deploy & Scale

Overview

The primary Fly.io workflow: configure fly.toml, deploy apps, manage secrets, scale across regions, and control machine lifecycle.

Instructions

Step 1: Configure fly.toml

# fly.toml — app configuration
app = "my-app"
primary_region = "iad"

[build]
  dockerfile = "Dockerfile"

[env]
  NODE_ENV = "production"
  PORT = "3000"

[http_service]
  internal_port = 3000
  force_https = true
  auto_stop_machines = "stop"    # Stop idle machines
  auto_start_machines = true     # Start on request
  min_machines_running = 1       # Always keep 1 warm

[http_service.concurrency]
  type = "requests"
  hard_limit = 250
  soft_limit = 200

[[vm]]
  cpu_kind = "shared"
  cpus = 1
  memory = "512mb"

Step 2: Deploy and Manage Secrets

# Set secrets (encrypted, injected as env vars)
fly secrets set DATABASE_URL="postgres://..." API_KEY="sk_..."

# List secrets (values hidden)
fly secrets list

# Deploy
fly deploy

# Check deployment status
fly status
fly releases

Step 3: Scale Across Regions

# Add machines in new regions
fly scale count 2 --region iad    # 2 machines in Virginia
fly scale count 1 --region lhr    # 1 machine in London
fly scale count 1 --region nrt    # 1 machine in Tokyo

# Adjust VM size
fly scale vm shared-cpu-2x --memory 1024

# Check current scale
fly scale show

Step 4: Manage App Lifecycle

# Restart all machines
fly apps restart

# Suspend an app (stop billing)
fly apps suspend my-app

# Resume
fly apps resume my-app

# Destroy (irreversible)
fly apps destroy my-app --yes

fly.toml Key Settings

SettingDefaultRecommended
auto_stop_machines"stop""stop" for most, "suspend" for fast resume
auto_start_machinestruetrue for HTTP services
min_machines_running01 for production (avoid cold starts)
concurrency.soft_limit200Tune based on app capacity

Error Handling

ErrorCauseSolution
failed to buildDockerfile issueTest locally: docker build .
health check failedApp not responding on internal_portVerify port matches app config
no machines runningAll stoppedSet min_machines_running = 1

Resources

Next Steps

For Postgres and volumes, see flyio-core-workflow-b.

Info
Category Development
Name flyio-core-workflow-a
Version v20260423
Size 3.08KB
Updated At 2026-04-28
Language