如何使用 C# worker 服务将正确的配置数据推送到 swarm/kubernetes?

How to push the correct configuration data with C# worker service to swarm/kubernetes?

我有 3 个配置在使用中:

1 - appsettings.development.json
2 - appsettings.testing.json
3 - appsettings.production.json

我在 launchsettings.json 中也有 3 个启动设置:

{
    "profiles": {
        "DevelopmentDockerProfile" {
            "commandName": "Docker",
            "environmentVariables": {
                "DOTNET_ENVIRONMENT": "development"
            }
        },
        "ProductionDockerProfile" {
            "commandName": "Docker",
            "environmentVariables": {
                "DOTNET_ENVIRONMENT": "production"
            }
        },
        "TestingDockerProfile" {
            "commandName": "Docker",
            "environmentVariables": {
                "DOTNET_ENVIRONMENT": "testing"
            }
        }
    }
}

而且我可以正常运行服务,只在本地机器上使用正确的配置。

我无法在发布时使用服务推送 DOTNET_ENVIRONMENT 变量。

有没有办法将环境变量绑定到 publishProfile.pubxml 或其他任何东西,环境变量 DOTNET_ENVIRONMENT 会神奇地出现在主机上的 docker 服务中?

简答

不,没有这个选项。

更长的一个

首先,您可以使用Environment.SetEnvironmentVariable("name", "value")轻松设置环境变量。但这可能不是你想要的。

您可能需要在配置中为您使用的 container/orchestration 工具配置环境变量,可以在 docker 命令行 (docker run -e VARIABLE_NAME=value) 或 docker-compose.yml 中设置对于 Docker 为 k8s 编写或服务 YAML 配置。