Skip to content

Migrate from Heroku

Quick reference for Heroku users moving to PaaS Runtime. For a full step-by-step walkthrough with data migration, environment variables, and review apps, see the Cookbook recipe.

Command equivalents

Heroku PaaS Runtime
heroku login paas login
heroku create my-app paas apps create my-app
git push heroku main git push paas main
heroku config:set KEY=val paas config:set KEY=val
heroku config paas config
heroku ps:scale web=2 paas ps:scale web=2
heroku logs --tail paas logs --tail
heroku run bash paas run -- bash
heroku addons:create heroku-postgresql:standard-0 paas addons:create database --type postgres --plan standard
heroku addons:create heroku-redis:premium-0 paas addons:create cache --type valkey --plan starter
heroku domains:add www.example.com paas domains:add www.example.com
heroku releases paas releases
heroku rollback v42 paas releases:rollback v42
heroku ps:exec paas shell

Procfile compatibility

PaaS reads your existing Procfile unchanged. The same process types (web, worker, release) work identically — $PORT is injected by the platform.

web: bundle exec puma -p $PORT
worker: bundle exec sidekiq
release: bundle exec rails db:migrate

Buildpack compatibility

PaaS uses Paketo Cloud Native Buildpacks — the OCI-compliant successor to Heroku Buildpacks. Language detection is identical (package.json, Gemfile, requirements.txt, go.mod, pom.xml, composer.json, mix.exs).

Heroku-specific buildpack env vars map cleanly:

Heroku PaaS (Paketo)
NODE_VERSION BP_NODE_VERSION
PYTHON_VERSION BP_PYTHON_VERSION
RUBY_VERSION BP_RUBY_VERSION
GO_VERSION BP_GO_VERSION

Quick migration (5 minutes)

paas login                                              # 1. Authenticate
paas apps create my-app                                 # 2. Create the app
paas addons:create database --type postgres --plan standard --name db  # 3. DB
heroku config -s --app my-heroku-app | paas config:import -            # 4. Env
git push paas main                                      # 5. Deploy

Migrate database via pg_dumppaas addons:psql (cf cookbook for details).

Caveats

  • Regions: Heroku us/eu → PaaS fr-par-1, de-fra-1, etc. Set in [app] region = "...".
  • Heroku Connect (Salesforce sync): no PaaS equivalent — use Salesforce REST API directly.
  • Free tier limits differ slightly: PaaS free tier sleeps after 30 min, 512Mi RAM, 0.1 CPU shared.

See also