Moving from Heroku.

Your Procfile, config vars and Postgres backup come along.

  1. Connect a server

    Install the agent. It connects out to the panel.

  2. Describe the app

    Write yawl.yaml from your Procfile, then yawl apply.

  3. Move the data

    Download the latest backup and yawl db import it.

services:
  - name: shop
    kind: web
    repo: https://github.com/acme/shop
    port: 8080
    release: [bin/rails, db:migrate]
    domains: [shop.example.com]
  - name: shop-worker
    kind: worker
    repo: https://github.com/acme/shop
    command: [bundle, exec, sidekiq]
  - name: nightly
    kind: cron
    repo: https://github.com/acme/shop
    schedule: "0 3 * * *"
    command: [bin/rails, reports:send]
  - name: shop-db
    kind: postgres
$ heroku pg:backups:capture -a shop
$ heroku pg:backups:download -a shop
$ yawl db import shop-db latest.dump
$ yawl env set shop DATABASE_URL --ref shop-db.url

What becomes what

AreaHerokuIn Yawl
AppBuildpacksYawl's builder for Go, Node and Python. Railpack for Ruby, PHP, Java and the rest. A Dockerfile wins.
Procfile web:The start command, for Go, Node and Python apps.
Procfile release:release: in yawl.yaml. It runs on the new image before it starts.
Procfile worker:A worker service with its command:.
Dynosreplicas:, 1 to 10 copies on one server.
Heroku SchedulerA cron service with a schedule:.
DataHeroku PostgresA Yawl Postgres. yawl db import loads Heroku's backup as it is.
Heroku Key-Value StoreA Yawl Valkey. Its data is not imported.
SettingsConfig varsyawl env set. --build gives one to the build too.
DATABASE_URL--ref shop-db.url, so it follows the database.
PORTSet by Yawl, as on Heroku.
Custom domainsdomains: on the web service, with TLS.