Skip to content

Moving to Guv

View as Markdown

Import a project from Heroku, Railway, Render, Fly.io or Docker Compose into guv.yaml.

Guv uses the same mental model as Railway and Heroku: projects, environments, services and add-on databases. Moving is mostly a matter of translating configuration, and guv import does that for you.

From your repository:

Terminal window
guv import

It reads whichever of these it finds and writes a guv.yaml:

From Files read
Railway railway.json, railway.toml, railway.ts
Render render.yaml
Fly.io fly.toml
Heroku Procfile, app.json
Docker Compose compose.yaml, docker-compose.yml

Review the file, then see what Guv would create, with the monthly cost:

Terminal window
guv plan
guv apply
  1. Create the database in Guv (guv apply does this from the manifest).

  2. Dump from your old provider with pg_dump, and restore through a short-lived tunnel:

    Terminal window
    guv db connect main < dump.sql
  3. Set your secrets. The CLI prompts for each value so nothing ends up in your shell history:

    Terminal window
    guv secrets set stripe-secret-key --env production

Add your domain with guv domains add, check the app on its generated address first, then update DNS. Keep the old provider running until the new DNS has settled.