我最近将Node.js应用程序从Heroku迁移到Fly.io,这主要是由于成本降低。
此博客文章将涵盖迁移过程中的必要步骤。
先决条件
-
Heroku应用程序运行
-
使用确切的版本来适用于套件中的依赖项和dev依赖项。
-
在Dockerfile,Package.json和GitHub Actions WorkFlow
中使用相同的node.js版本
-
使用API网关或自定义域进行服务,因此Web应用程序和移动应用不会因更改服务的URL而受到影响
迁移步骤
-
迁移环境变量和秘密
-
使用以下命令迁移Postgres数据库(不需要数据库配置选项中的
ssl
字段)
fly secrets set HEROKU_DATABASE_URL=$(heroku config:get DATABASE_URL)
fly ssh console
apt update && apt install postgresql-client
pg_dump -Fc --no-acl --no-owner -d $HEROKU_DATABASE_URL | pg_restore --verbose --clean --no-acl --no-owner -d $DATABASE_URL
exit
fly secrets unset HEROKU_DATABASE_URL
-
如果使用了REDIS数据库
-
在github操作工作流程中包括部署步骤