Migrating from Heroku to Widemesh
This guide covers the steps required to migrate an existing Heroku app to Widemesh.
After a successful migration from Heroku to Widemesh you can expect to:
- No longer rely on Dyno types to host your app, your app will be hosted in containers deployed on servers provisioned by Widemesh out of your own AWS or DigitalOcean account.
- Continue using most Heroku Add-ons that inject configurations via configuration variables.
- Continue deploying apps the same way as before, regardless of the Heroku stack.
Deploying the source code
It’s crucial you determine the configuration of your Heroku app first, so it matches when deployed on Widemesh.
Widemesh supports the only two ways to deploy Heroku apps: Buildpacks and Docker Containers.
Note: The rest of this guide assumes you have installed and correctly configured the Heroku CLI, git, and
heroku git:remote for the source code in the current directory.
To determine what stack is your Heroku app using you can use:
The outputs show a list of Heroku stacks with a star in the one you Heroku app currently uses:
=== Available Stacks cedar-14 container heroku-16 * heroku-18
In this case, the star is at
heroku-18, that means you could deploy this app on Widemesh like any other:
If the star is at
container it means you must deploy your widemesh app with the following command:
mesh deploy --dockerfile
This command updates the Widemesh stack of your app to use your
Dockerfile before building and deploying your app.
See the docs of
mesh deploy for more information.
Warning: When the star is either at
heroku-16, we recommend you first upgrade your stack to
heroku-18 in Heroku, test your app stability, and only then continue with the rest of this guide to complete your migration to Widemesh.
Both Heroku and Widemesh provide configuration variables to your app via environment variables; you can quickly import your Heroku configuration variables with the following command:
heroku config -j | mesh config import --json-file=-
This exports all the configurations from Heroku as json (
-j) and get piped to Widemesh via stdin(
See the focs of
mesh config import for more information and examples.