如何为多容器Linux Web应用从Azure Key Vault设置环境变量?
多容器Linux Web应用从Azure Key Vault设置服务专属环境变量的解决方案
直接在docker-compose.yml里用@Microsoft.KeyVault引用密钥的方式是无效的,Azure不会解析这里的引用,只会把它当作普通字符串返回。正确的做法是分两步走:
步骤1:在App Service应用配置中添加Key Vault引用
先到Azure Portal的App Service应用配置页面,为每个服务需要的密钥创建独立的配置项,值用@Microsoft.KeyVault格式填写:
- 配置项名称:
MY_SERVICE_TEST_KEY,值:@Microsoft.KeyVault(VaultName=my-secret-vault;SecretName=my-secret-key) - 配置项名称:
SECOND_SERVICE_TEST_KEY,值:@Microsoft.KeyVault(VaultName=my-secret-vault;SecretName=my-second-service-secret-key)
这一步会让Azure在应用启动前自动解析这些引用,把密钥的实际值注入到应用环境变量中。
步骤2:在docker-compose.yml中引用应用配置变量
修改docker-compose.yml,通过环境变量替换语法,把App Service里的配置项传递给对应的服务:
version: "3.9" services: my_service: image: <IMAGE_TAG_HERE> environment: - TEST_KEY=${MY_SERVICE_TEST_KEY} my_second_service: image: <IMAGE_TAG_HERE> environment: - SECOND_SERVICE_TEST_KEY=${SECOND_SERVICE_TEST_KEY}
这样部署后,每个服务就能拿到对应Key Vault密钥的实际值了。
内容的提问来源于stack exchange,提问作者Fazakas Istvan
相关产品推荐
相关产品推荐

