【发布时间】:2020-12-24 12:55:08
【问题描述】:
我有一个封装为 Docker Image 的 API,并有 3 个不同的 appsettings 文件,它们是 appsettings.Development.json、appsettings.QA.json 和 appsettings.Production.json,每个都包含用于不同环境需求的连接字符串。还有一个主要的appsettings.json 用于其他常用凭据。
我使用 CI 中的环境变量替换了以下几行:
ENV ASPNETCORE_ENVIRONMENT #{environment-profile}#
...
ENTRYPOINT ["dotnet", "Api.dll", "--environment=#{environment-profile}#"]
environment-profile = 我当前 CI 的开发。
但是,我想让environment-profile 可以灵活一些吗?就像我想部署到另一个环境(如 QA)时一样。 environment-profile 不用在 CI 管道中手动更改就可以切换到 QA 吗?
有没有办法做我想做的事?或者人们在 CI/CD 管道中适应不同环境应用程序设置的正常方式是什么?
如果有人能提供帮助,谢谢!
【问题讨论】:
-
让您的应用程序直接从环境变量中读取设置,并使用适当的环境变量集运行容器,或者将您的应用程序直接与 Azure 应用程序配置和 KeyVault 等外部配置管理存储集成。或者使用
--env ASPNETCORE_ENVIRONMENT =whatever运行您的容器 -
@DanielMann,它直接从管道变量中读取
Development,然后构建镜像,然后运行容器。 -
就像我说的,你可以在运行容器时指定环境变量的值。
标签: azure-devops continuous-integration continuous-deployment