【问题标题】:How to keep Environment setting out of git repository如何将环境设置保留在 git 存储库之外
【发布时间】:2020-07-18 08:58:12
【问题描述】:

我希望能够根据我运行的环境(开发或生产)加载不同的配置。为此,我关注了https://docs.microsoft.com/en-us/aspnet/core/fundamentals/environments?view=aspnetcore-3.1 上的文章。

文章指示我将ASPNETCORE_ENVIRONMENT=Development 设置添加到launchSettings.json 以在“开发”环境中本地运行我的应用程序。现在,问题是launchSettings.json 也被推送到 GIT 存储库。这意味着我的代码将始终在“开发”环境中运行。如果我有一些 CI/CD 管道连接到我的存储库怎么办?我猜它会将我的应用程序部署在“开发”而不是“生产”中,这显然是错误的。

我在这里错过了什么?

【问题讨论】:

    标签: c# .net environment-variables development-environment


    【解决方案1】:

    我们在“主机”或 docker 容器上使用环境变量来覆盖一系列设置,例如ASPNETCORE_ENVIRONMENT=生产

    我们从主机上的配置文件开始,它会覆盖 appsettings,但这种方法不能很好地扩展。现在我们在部署应用程序时设置环境变量(对我们来说是 docker 容器)。

    如果您使用“CreateDefaultBuilder”,则环境变量将覆盖除命令行参数以外的所有设置,您可以在此处阅读:https://docs.microsoft.com/en-us/aspnet/core/fundamentals/configuration/?view=aspnetcore-3.1

    【讨论】:

    • 好的,那么如何在本地设置“ASPNETCORE_ENVIRONMENT=Development”呢? launchSettings.json?
    • 是的,开发设置在launchSettings.json中
    • 好的,但问题是,当您部署应用程序时,launchSettings.json 不会与它一起部署吗?它不会让您的应用始终在开发中工作吗?
    • 我猜你的 IDE 使用 launchSettings.json 来为你的机器设置环境变量。所以它们不会被您部署的环境中的应用程序使用。但请确保在已部署的机器/容器上设置适当的环境变量,以不依赖默认值。
    【解决方案2】:

    也许您应该使用 .gitignore 之类的东西? 只需在 git 根目录中创建一个并将launchSettings.json 写入其中。 然后运行git rm --cached。之后,launchSettings.json 文件不应再由 git 提交。 我对 git 也不是很熟悉,所以可以随意发现任何错误。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 2020-04-23
    • 1970-01-01
    • 2019-05-12
    • 2011-08-03
    • 1970-01-01
    相关资源
    最近更新 更多