Movatterモバイル変換


[0]ホーム

URL:


Skip to content
DEV Community
Log in Create account

DEV Community

Render profile imageAudrey Maldonado
Audrey Maldonado forRender

Posted on

     

Migration Guide: Heroku to Render

This guide will help you migrate a Heroku app, Heroku Postgres database, and Heroku Redis instance to Render. Using Render to run your web services and databases is very similar to running them on Heroku. Additionally, many users have found that Render saves them money and provides additional functionality not available from Heroku. Read more about thedifferences between Render and Heroku.

This guide and associated Heroku CLI plugin covers most migration use cases. It supports migrating a Heroku app and its Heroku Postgres and Heroku Redis add-ons. You may continue using other Heroku add-ons while your app is running on Render by copying over the appropriate environment variables -- e.g., if you are using Heroku's Sengrid add-on, setSENDGRID_USERNAME andSENDGRID_PASSWORD in the Render Dashboard. Please contact us atsupport@render.com if you experience any problems migrating from Heroku to Render.

Requirements

Migration Steps

  1. Generate aDockerfile.render andrender.yaml using Render's Heroku CLI Plugin
  2. Create Resources on Render
  3. Configure Environment Variables
  4. Copy Data From PostgreSQL
  5. Update DNS Configuration

Concept Mapping

Before you start the migration, review the following table to understand how some Heroku concepts map to Render concepts.

HerokuRender
Web Process (within a Heroku app)Web Service
Worker Process (within a Heroku app)Background Worker
DynoAn instance of your service on Render
Heroku PostgresRender PostgreSQL
Heroku RedisRender Redis
Heroku SchedulerCron Job
Config VarsEnvironment Variables

Step 1: Generate aDockerfile.render andrender.yaml

Install Render's Heroku CLI Plugin

Render has created a plugin for the Heroku CLI to reduce some of the manual migration steps. Install the plugin with the following command.


The CLI plugin willnot modify your Heroku app. It only performs read operations.

heroku plugins:install @renderinc/heroku-import
Enter fullscreen modeExit fullscreen mode

Run CLI Plugin

The CLI plugin will read information about your app and its add-ons and create two files:Dockerfile.render andrender.yaml. Here is what the process looks like. Run it from the root of the repository containing your app's code.

You will then be prompted to select the Heroku Postgres and Heroku Redis add-ons you would like to migrate to Render. After making your selections, aDockerfile.render andrender.yaml will be created for you, and instructions will be shown.

Excluded Environment Variables

  • DATABASE_URL
  • HEROKU_
  • KEY
  • PASSWORD
  • REDIS_URL
  • REDIS_TLS_URL
  • SECRET
  • TOKEN

AddDockerfile.render andrender.yaml to Source Control

The CLI plugin has now created two files:Dockerfile.render andrender.yaml. TheDockerfile.render defines how to build your app on Render using a Heroku buildpack. Therender.yaml is Render'sInfrastructure-as-Code file. It can be used to define multiple services and databases running on Render and their relationship to each other.

Now, add these two files to source control with the following commands.

git add Dockerfile.render render.yamlgit commit-m'Prepare app for deploy to Render'git push origin
Enter fullscreen modeExit fullscreen mode

Step 2: Create Resources on Render

From theRender Dashboard, selectNew + and thenBlueprint. Connect yourGitHub orGitLab account to Render if you haven't already, and then search for and select your repository.

Render will create a plan to build and deploy your service along with a Render PostgreSQL database and Render Redis service if your Heroku app was using these and you selected them for import in theRun CLI Plugin step above.

Review the plan and clickApply, and Render will create your resources.

If all resources were created successfully, continue to the next step. If there was an error you cannot resolve, please contact us atsupport@render.com. We're here to help!

Step 3: Configure Environment Variables

You may need to manually create environment variables that contain secrets like passwords or API tokens using the Render Dashboard. The CLI pluginexcluded environment variables with names containing values indicating they may contain secrets.

To create or update environment variables using the Render Dashboard,

  1. SelectDashboard on the left
  2. Select the service you just created from the list
  3. Select theEnvironment tab and create or update environment variables (check the CLI plugin output if you'd like to copy from your Heroku Config Vars)

Step 4: Copy Data from PostgreSQL

PostgreSQL

If you have created a Render PostgreSQL database, you may want to copy the data from your Heroku Postgres database to Render.

Put your Heroku app into maintenance mode so that no new data is written to the database during the copy.<HEROKU APP NAME> is the Heroku app that owns the Heroku Postgres add-on.


This data migration process requires some downtime.

heroku maintenance:on--app <HEROKU APP NAME>
Enter fullscreen modeExit fullscreen mode

Create a backup of the data in you Heroku Postgres database.

heroku pg:backups:capture--app <HEROKU APP NAME>
Enter fullscreen modeExit fullscreen mode

Download the backup. This will download a file namedlatest.dump to your local computer.

heroku pg:backups:download--app <HEROKU APP NAME>
Enter fullscreen modeExit fullscreen mode

Importlatest.dump into your Render PostgreSQL database. The value for<EXTERNAL CONNECTION STRING> can be found on the Render Dashboard page for your database.

pg_restore--verbose--no-acl--no-owner-d <EXTERNAL CONNECTION STRING> latest.dump
Enter fullscreen modeExit fullscreen mode

If your database is larger than 20GB or under heavy load, useHeroku's instructions to create a backup of your data. After that has completed, you can use the samepg_restore command above to import the data to your Render PostgreSQL database.

Consider using the--jobs flag available to both thepg_dump andpg_restore commands to reduce the time required for backup and restore.

Step 5: Update DNS Configuration

If your Heroku app is using a custom domain, follow the instructions toupdate your DNS configuration to point to Render instead of Heroku. Note that some downtime may be required between when your DNS changes propogate and when Render provisions a TLS certificate for your domain.


  1. If you would like to migrate a Heroku app to Render that is not using an official Heroku buildpack please contact us atsupport@render.com for assistance. 

  2. We are working on supporting migration of Heroku apps that use multiple buildpacks. 

Top comments(0)

Subscribe
pic
Create template

Templates let you quickly answer FAQs or store snippets for re-use.

Dismiss

Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment'spermalink.

For further actions, you may consider blocking this person and/orreporting abuse

Render is a unified cloud to build and run all your apps and websites with free SSL, a global CDN, private networks, and auto deploys from Git.

More fromRender

DEV Community

We're a place where coders share, stay up-to-date and grow their careers.

Log in Create account

[8]ページ先頭

©2009-2025 Movatter.jp