管理 Azure 容器应用中的环境变量
在 Azure 容器应用中,可以设置运行时环境变量。 这些变量可以设置为手动条目或者对机密的引用。
这些环境变量在运行时加载到容器应用中。
可以在创建容器应用时配置环境变量,或者以后通过创建新的修订版来配置环境变量。
注意
为了避免混淆,不建议复制环境变量。 当多个环境变量同名时,列表中的最后一个环境变量将生效。
可以使用 az containerapp create 命令创建具有环境变量的容器应用,运行该命令时,需使用 --env-vars
参数将环境变量作为空格分隔的“键=值”条目来传递。
az containerapp create -n my-containerapp -g MyResourceGroup \
--image my-app:v1.0 --environment MyContainerappEnv \
--secrets mysecret=secretvalue1 anothersecret="secret value 2" \
--env-vars GREETING="Hello, world" ANOTHERENV=anotherenv
如果你要引用机密,则必须确保要引用的机密已创建,具体请参阅管理机密。 可以使用机密名称并将其传递给值字段,但机密名称必须以 secretref:
开头
az containerapp update \
-n <APP NAME>
-g <RESOURCE_GROUP_NAME>
--set-env-vars <VAR_NAME>=secretref:<SECRET_NAME>
如果你要使用 PowerShell,则首先必须使用 New-AzContainerAppEnvironmentVarObject PowerShell cmdlet 创建一个名为 EnvironmentVar 的内存中对象。
若要使用此 cmdlet,必须分别使用 -Name
参数传递环境变量的名称,使用 -Value
参数传递值。
$envVar = New-AzContainerAppEnvironmentVarObject -Name "envVarName" -Value "envVarvalue"
如果你要引用机密,则必须确保要引用的机密已创建,具体请参阅管理机密。 可以使用机密名称并将其传递给 -SecretRef
参数:
$envVar = New-AzContainerAppEnvironmentVarObject -Name "envVarName" -SecretRef "secretName"
然后,必须使用 New-AzContainerAppTemplateObject PowerShell cmdlet 创建名为 Container 的另一个内存中对象。
在此 cmdlet 中,必须使用 -Name
参数传递所需容器映像(不是容器应用!)的名称,使用 -Image
参数传递完全限定的映像名称,并引用之前在 $envVar
变量中定义的环境对象。
$containerTemplate = New-AzContainerAppTemplateObject -Name "container-app-name" -Image "repo/imagename:tag" -Env $envVar
最后,可以根据使用 Update-AzContainerApp PowerShell cmdlet 创建的新模板对象来更新容器应用。
在此最后一个 cmdlet 中,只需使用 $containerTemplate
参数传递通过上一步骤在 -TemplateContainer
变量中定义的模板对象。
Update-AzContainerApp -TemplateContainer $containerTemplate
在现有容器应用上添加环境变量
创建容器应用后,更新容器应用环境变量的唯一方法是创建包含所需更改的新修订版。
在 Azure 门户中搜索“容器应用”,然后选择你的应用。
在应用的左侧菜单中,选择“修订版和副本”>“创建新修订版”
然后必须编辑当前的现有容器映像:
在“环境变量”部分,可以通过单击“添加”来添加新的环境变量。
然后设置环境变量的“名称”和“源”(可以是对机密的引用)。
如果为“源”选择“手动”,则可以手动输入环境变量值。
可以使用 az containerapp update 命令更新容器应用。
此示例创建一个具有手动值的环境变量(不引用机密)。 将 <PLACEHOLDERS> 替换为你的值。
az containerapp update \
-n <APP NAME>
-g <RESOURCE_GROUP_NAME>
--set-env-vars <VAR_NAME>=<VAR_VALUE>
如果你要创建多个环境变量,可以用“键=值”格式插入空格分隔的值。
如果你要引用机密,则必须确保要引用的机密已创建,具体请参阅管理机密。 可以使用机密名称并将其传递给值字段,但机密名称必须以 secretref:
开头,请参阅以下示例:
az containerapp update \
-n <APP NAME>
-g <RESOURCE_GROUP_NAME>
--set-env-vars <VAR_NAME>=secretref:<SECRET_NAME>
内置环境变量
Azure 容器应用会自动添加环境变量,应用和作业可以使用这些变量在运行时获取平台元数据。
应用
以下变量可用于容器应用:
变量名称 |
说明 |
示例值 |
CONTAINER_APP_NAME |
容器应用的名称。 |
my-containerapp |
CONTAINER_APP_REVISION |
容器应用修订版的名称。 |
my-containerapp--20mh1s9 |
CONTAINER_APP_HOSTNAME |
容器应用的特定于修订版的主机名。 |
my-containerapp--20mh1s9.<DEFAULT_HOSTNAME>.<REGION>.azurecontainerapps.dev |
CONTAINER_APP_ENV_DNS_SUFFIX |
容器应用环境的 DNS 后缀。 若要获取应用的完全限定的域名 (FQDN),请将应用名称追加到 DNS 后缀,其格式为 $CONTAINER_APP_NAME.$CONTAINER_APP_ENV_DNS_SUFFIX 。 |
<DEFAULT_HOSTNAME>.<REGION>.azurecontainerapps.dev |
CONTAINER_APP_PORT |
容器应用的目标端口。 |
8080 |
CONTAINER_APP_REPLICA_NAME |
容器应用副本的名称。 |
my-containerapp--20mh1s9-86c8c4b497-zx9bq |
作业
以下变量可用于容器应用作业:
变量名称 |
说明 |
示例值 |
CONTAINER_APP_JOB_NAME |
作业的名称。 |
my-job |
CONTAINER_APP_JOB_EXECUTION_NAME |
作业执行的名称。 |
my-job-iwpi4il |
后续步骤