Fly.io and Miget both run containerized apps, so most of your setup carries over. The biggest practical difference: on Miget your app must listen on port 5000, and there is no fly.toml importer - you recreate your app configuration in the Miget dashboard. Your Dockerfile, databases, and volumes all have direct equivalents.

What maps to Miget

Fly.ioMiget
Machine / AppApp
DockerfileDockerfile (Docker Engine builder)
fly.tomlApp settings (recreate manually)
Fly PostgresManaged PostgreSQL
Fly VolumeVolume
Fly secretsEnvironment variables
Miget builds your app from the same Dockerfile Fly uses, via its Docker Engine builder. If you’d rather skip the Dockerfile, Miget’s buildpacks can auto-detect and build your app from source.

Migration steps

Make your app listen on port 5000

Fly’s fly.toml defines an internal_port for your service. Miget sets an immutable PORT=5000 and only routes public traffic to port 5000, so update your app or Dockerfile to bind there.Read the port value from the PORT environment variable rather than hardcoding it. See Ports for details.

Deploy your image or Dockerfile

You have two paths:
  • Buildpacks / Dockerfile: push your repo with git push miget and Miget builds it - using your existing Dockerfile if present, or auto-detecting via buildpacks. See Git push to builder.
  • Image-based: deploy a prebuilt container image from a registry or through the GitHub integration.

Move your database

Provision a managed PostgreSQL database on Miget. Miget injects the connection string as DATABASE_URL.Migrate your data with pg_dump from Fly Postgres and pg_restore into the Miget database. If you use Redis, Miget exposes it via REDIS_URL.

Recreate your secrets as environment variables

Fly secrets become Miget environment variables. Copy each secret over in the dashboard. DATABASE_URL and REDIS_URL are injected automatically by their managed services, so you don’t need to set them by hand.If your app relies on persistent files, recreate your Fly volumes as Miget volumes.

Point your domain at Miget

Add your custom domain and let Miget issue TLS certificates automatically. See Custom domains. Update your DNS to cut traffic over once you’ve verified the deployment.
Your app must listen on port 5000 on Miget. PORT is fixed at 5000 and cannot be changed, and only port 5000 receives public traffic. Whatever internal_port you used in fly.toml will not carry over - update your app or Dockerfile before deploying.
There is no fly.toml import. Treat your fly.toml as a reference and recreate its settings - regions, scaling, health checks, env - through the Miget dashboard.

Next steps

How deployments work

Understand Miget’s build and deploy model.

Git push to builder

Deploy straight from your Git repo.

Managed PostgreSQL

Provision a database with an injected DATABASE_URL.

Volumes

Add persistent storage for your app.

Custom domains

Bring your domain with automatic TLS.

Fair Scheduler

See how Miget shares compute across your apps.