首页 > 解决方案 > AWS ECS 根据环境指定配置文件

问题描述

我有两个应用程序(.net core 3.1 和 Angular 8),它们作为 docker 容器部署在 aws ecs 上。现在我想设置多个环境,例如质量、暂存、生产等。现在我想从特定配置文件中读取数据,以便暂存 docker 容器从 appsettings.staging.json 读取数据,而对于生产,它将从 appsettings 读取数据。生产.json。Angular 也一样。

我怎样才能做到这一点?我可以在 aws 中的 codebuild 中指定环境变量,但是如何告诉 docker 读取特定文件?

标签: dockerasp.net-coreamazon-ecsaws-codepipelineaws-codebuild

解决方案


一些随意的想法:

  1. 为不同的环境(UAT/DEV/PROD)创建不同的ECS集群。
  2. 对不同的环境使用相同的 docker 镜像(每个环境不重建镜像)
  3. 从参数存储 [1] 或 Secrets Manager [2] 中提取密钥/配置
  4. 将版本化配置文件保存在 S3 或 Git 中,并在容器初始化时将其拉下。不要使用图像烘焙配置。更好的是,没有配置文件,所有内容都从环境变量中读取。寻找像 confd ( https://github.com/kelseyhightower/confd )这样的解决方案
  5. 一般看如下:https ://12factor.net/

参考:

[1] https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html

[2] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/specifying-sensitive-data-tutorial.html


推荐阅读