所以我有一个节点js app我想部署到EC2。
我打算创建它的多个实例,并将它放在Nginx之外,以实现负载平衡。
我知道我可以使用AWS Beanstalk,但我认为这超出了我不需要的配置。
我的问题是关于应用更新流程。我想到了两个选择。
第一个是在EC2上创建一个裸git存储库,每次推送一些更改时,它都会挂钩到after after事件,创建应用程序的新实例并更新Nginx以切换到新实例。 / p>
另一种选择是使用Amazon ECR和容器。每当我在ECR上更新我的应用程序图像时,它都会向EC2机器发送一个事件(我不确定它是否可行)来创建应用程序的新实例并再次告诉Nginx切换。
您认为哪一个更受欢迎?
答案 0 :(得分:0)
以下是我们使用的部署方法
1)在ec2服务器中创建git bare repo,并使用生产分支进行跟踪。
2)在post-receive
钩子
#!/bin/sh
git --work-tree=/var/www/domain.com --git-dir=/var/repo/site.git checkout -f
cd /var/www/domain.com && npm install && forever restart app.js
3)在nginx配置中
{
proxy_pass:https://localhost:3000
}
注意:
您可以自定义post hook以检查其第一次部署是否运行npm install
,否则运行npm update
。
我希望这有助于解决您的问题