2017-09-04 21 views
2

我有一个包含多个服务,web和worker的nodejs项目。所有这些服务都在相同的回购协议中,唯一不同的是用于调用它们的脚本。弹性beanstalk中的多个Nodejs应用程序

我想为每个服务配置不同的配置,但我也想让它们保持在1个回购下。我可以使用环境,但那样会混乱我的真实环境,如生产,舞台等。 如何使用弹性beanstalk这种架构?构建环境是最佳解决方案吗?

回答

1

有很多方法可以解决这个问题,每个方法都有其优点和缺点。我过去的做法是将我的配置上传到通常无法被公众读取的特定S3存储桶。然后,我会创建一个签名的URL(对于未来几年有用),并将其设置为Beanstalk配置中的环境变量。然后,在我的.ebextensions/01-setup.config(或其他地方类似的),我有这样的:

{ 
    "container_commands": { 
    "copy_config": { 
     "command": "curl $CONFIG_URL > conf/config.json" 
    } 
    } 
} 

在启动时,容器会阻拦从S3桶配置的副本,复制本地,然后应用程序将启动与此配置。

维护起来非常简单。

+0

这个架构在beanstalk中会是什么样子?每个服务会有多个环境?如果是这样,你将如何处理环境,如分期,产品等? – sidoshi

+0

@sidoshi是的,我会为每个环境创建一个单独的Beanstalk应用程序。当你在beanstalk中配置它时,你可以指定'CONFIG_URL'环境变量。该URL将是一个指向适合该环境的配置的签名URL。在您的S3存储桶中,您将拥有诸如“appname-config-prod.json”,“appname-config-dev.json”等内容。 – Brad

相关问题