This guide also works for migrating your application from Heroku to GCP, Azure, Scaleway.
What you will do
- Create your Dockerfile(s)
- Create resources on Qovery (applications and databases)
- Configure your Environment Variables and Secrets
- Copy your data from Heroku databases to AWS
- Deploy your apps
1. Create Your Dockerfile
Find a Dockerfile template
We provide Dockerfile templates for Rails, NodeJS, React, VueJS, NextJS, Golang, Flask, Django, Laravel, Symfony, Spring, Rust, and many more.Example: Rails application
Example: Rails Sidekiq worker
Test your Dockerfile
Build your Dockerfile:Once you successfully build your application with Docker, your app will run anywhere (not only on AWS with Qovery).
Environment variables at build time
If your application needs environment variables at build time, you can use theARG instruction in your Dockerfile:
Add your Dockerfile to your Git repository
2. Create Resources on Qovery
Create your application
- Connect to the Qovery Console
- Create your Organization and Project
- Create your production Environment
- Create your application with the name of your repository
- Select your GitHub/GitLab/Bitbucket repository
- Select the branch you want to deploy
- Specify the port your application is listening on
- Click on create
Your application is created but not deployed yet! You can configure the vCPU, Memory, Environment Variables… before deploying.
Create your database
- Go to your production Environment
- Click on “Add” and then “Database”
- Select your database type and version (PostgreSQL, MySQL, MongoDB, Redis)
- Select Managed or Container mode
- Select Public accessibility (or Private if you don’t need to restore data from Heroku)
3. Configure Environment Variables and Secrets
Export your environment variables from Heroku
Use the Heroku CLI to export your environment variables:Import your environment variables with Qovery CLI
Connect your frontend to your backend
Create environment variable aliases to connect your applications.Connect your backend to your database
Create environment variable alias on_DATABASE_URL_INTERNAL (not _DATABASE_URL).
4. Copy Data from Heroku Databases to AWS
Data migration support through Replibyte is coming soon.5. Deploy Your Apps
After completing the configuration, you’re ready to deploy through the Qovery console.FAQ by Heroku Users
How to create a custom domain?
How to create a custom domain?
Check the custom domain configuration documentation for setup instructions.
How to monitor my apps?
How to monitor my apps?
Qovery recommends using Datadog or comparable monitoring tools. See our monitoring guide.
Do you have Heroku 'Review App' equivalent?
Do you have Heroku 'Review App' equivalent?
Yes, Qovery provides Preview Environment functionality.
How to rollback?
How to rollback?
App rollback is available through the deployment actions.
How does auto-scaling work?
How does auto-scaling work?
Auto-scaling is configured in the application settings.
How to manage database migration?
How to manage database migration?
Database migrations can be managed using Lifecycle Jobs.
Is it possible to get a shell / connect to my app?
Is it possible to get a shell / connect to my app?
Yes, via Qovery cloud shell button in the console interface, selecting pod and container. Also available through CLI with
qovery shell command.Can I use Terraform and Infrastructure as Code?
Can I use Terraform and Infrastructure as Code?
Yes, Qovery has a Terraform provider available for infrastructure-as-code deployment.
How can I connect my app to MongoDB Atlas?
How can I connect my app to MongoDB Atlas?
Use VPC peering for secure connection to MongoDB Atlas.
How can I connect my app to an AWS service not managed by Qovery?
How can I connect my app to an AWS service not managed by Qovery?
Use VPC peering to connect to external AWS services.