繁体   English   中英

将服务器部署到 heroku 开发和生产

[英]Deploy server to heroku both dev and prod

我有一个 Heroku 应用程序准备就绪并且可以工作,它已连接到我的 github 存储库,并且我的Node.js 项目项目中有一个 Procfile Procfile准确地说是 NestJS.server) 目前,每次我推送我的回购项目时,heroku 都会部署服务器:

web npm run start:prod

作为 CI/CD 过程的一部分,我的目标是创建 2 个部署的服务器:

  1. 当推送到development分支时 - 在这种情况下运行开发服务器版本
  2. 当推送到master分支时,在这种情况下部署生产服务器(2 个不同的服务器)。

我的问题是实现这一目标的方法是什么?

我想我应该创建另一个 Heroku 应用程序并将其连接到我的 repo 的开发分支,但是我如何确保我在这里运行开发版本? 我应该在这些分支上持有 2 个不同的Procfile吗? 我真的必须创建另一个 Heroku 应用程序还是有更好的方法?

理想情况下,您永远不应该将您的应用程序的development版本部署到公共环境,因为除其他外,它可能会暴露您的安全漏洞,这些漏洞以后可能会在您的生产服务器上被利用。

您可能正在谈论的是我们所说的staging环境。 这是一个与production环境完全一样配置的环境,但我们在将代码部署到production环境之前对其进行测试。

Heroku 而言- 是的,您实际上需要两个 Heroku 应用程序 - 一个用于production ,一个用于staging

请注意, staging环境应与NODE_ENV=production一起运行。

在 CI/CD 方面,我已将我的 CD 配置为部署到不同的 Heroku 应用程序,具体取决于分支推送到哪个应用程序。 development转到我们的staging应用程序, master转到我们的production应用程序。 (尽管为简单起见,我将分支重命名为stagingproduction :D)。

我无法为您提供 GitHub 操作的现成脚本,因为我正在使用 GitLab 并且虽然 CI/CD 在那里非常相似,但存在细微的差异,但 GutHub 操作应该具有以下if

if: github.ref == 'refs/heads/master'
 - dpl --provider=heroku --strategy=api --app=$HEROKU_PROD_APP_NAME --api-key=$HEROKU_PROD_API_KEY

此外,您不需要两个Procfile ,因为如果您想确保您的代码在生产环境中的行为相同,则环境应该配置相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM