如何使用 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 配置。
我有 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 配置。