Azure Container Apps で環境変数を管理する
- [アーティクル]
-
-
Azure Container Apps では、ランタイム環境変数を設定できます。 これらの変数は、手動でエントリとして、またはシークレットへの参照として設定できます。
これらの環境変数は、実行時にコンテナー アプリに読み込まれます。
新しいリビジョンを作成することで、コンテナー アプリの作成時に、または後で環境変数を構成できます。
Note
混乱を避けるため、環境変数を複製することはお勧めしません。 複数の環境変数の名前が同じであるときは、リスト内の最後の変数が有効になります。
Azure portal を使用して新しいコンテナー アプリを作成する場合は、[コンテナー] セクションで環境変数を設定できます。
--env-vars
パラメーターを使用してスペース区切りの 'key=value' エントリとして環境変数を渡すことで、az containerapp create コマンドを使って環境変数でコンテナー アプリを作成できます。
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 コマンドレットを使って、EnvironmentVar という名前のメモリ内オブジェクトを作成します。
このコマンドレットを使用するには、-Name
パラメーターを使用して環境変数の名前を渡し、それぞれ -Value
パラメーターを使って値を渡す必要があります。
$envVar = New-AzContainerAppEnvironmentVarObject -Name "envVarName" -Value "envVarvalue"
シークレットを参照する場合は、参照するシークレットが既に作成されていることを確かめる必要があります。「シークレットを管理する」を参照してください。 シークレット名を使用して、-SecretRef
パラメーターに渡すことができます。
$envVar = New-AzContainerAppEnvironmentVarObject -Name "envVarName" -SecretRef "secretName"
次に、New-AzContainerAppTemplateObject PowerShell コマンドレットを使用して、Container という別のメモリ内オブジェクトを作成する必要があります。
このコマンドレットでは、-Name
パラメーターを使って必要なコンテナー イメージ (コンテナー アプリではない) の名前を渡し、-Image
パラメーターを使用して完全修飾イメージ名を渡して、変数 $envVar
で前に定義した環境オブジェクトを参照する必要があります。
$containerTemplate = New-AzContainerAppTemplateObject -Name "container-app-name" -Image "repo/imagename:tag" -Env $envVar
最後に、Update-AzContainerApp PowerShell コマンドレットを使用して作成した新しいテンプレート オブジェクトに基づいてコンテナー アプリを更新できます。
この最後のコマンドレットでは、-TemplateContainer
パラメーターを使用して前の手順で $containerTemplate
変数に定義したテンプレート オブジェクトのみを渡す必要があります。
Update-AzContainerApp -TemplateContainer $containerTemplate
既存のコンテナー アプリで環境変数を追加する
コンテナー アプリが作成された後、コンテナー アプリ環境変数を更新する唯一の方法は、必要な変更を含む新しいリビジョンを作成することです。
Azure portal で、Container Apps を検索し、アプリを選択します。
アプリの左側のメニューで、[リビジョンとレプリカ] > [新しいリビジョンの作成] を選択します
次に、現在の既存のコンテナー イメージを編集する必要があります。
[環境変数] セクションで、[追加] をクリックして新しい環境変数を追加できます。
次に、環境変数の名前とソース (シークレットへの参照にすることができます) を設定します。
ソースを手動として選択した場合は、環境変数の値を手動で入力できます。
az containerapp update コマンドを使用して、コンテナー アプリを更新できます。
この例では、(シークレットを参照しない) 手動値を使用して環境変数を作成します。 <プレースホルダー> は実際の値に置き換えてください。
az containerapp update \
-n <APP NAME>
-g <RESOURCE_GROUP_NAME>
--set-env-vars <VAR_NAME>=<VAR_VALUE>
複数の環境変数を作成する場合は、スペース区切りの値を 'key=value' 形式で挿入できます。
シークレットを参照する場合は、参照するシークレットが既に作成されていることを確かめる必要があります。「シークレットを管理する」を参照してください。 シークレット名を使用して値フィールドに渡すことができますが、secretref:
で始まります。次の例を参照してください。
az containerapp update \
-n <APP NAME>
-g <RESOURCE_GROUP_NAME>
--set-env-vars <VAR_NAME>=secretref:<SECRET_NAME>
組み込みの環境変数
Azure Container Apps により、環境変数が自動的に追加されます。アプリやジョブで実行時にこれを使用して、プラットフォームのメタデータを取得できます。
アプリ
コンテナー アプリに対して次の変数を使用できます。
変数名 |
説明 |
値の例 |
CONTAINER_APP_NAME |
コンテナー アプリの名前。 |
my-containerapp |
CONTAINER_APP_REVISION |
コンテナー アプリ リビジョンの名前。 |
my-containerapp--20mh1s9 |
CONTAINER_APP_HOSTNAME |
コンテナー アプリのリビジョン固有のホスト名。 |
my-containerapp--20mh1s9.<DEFAULT_HOSTNAME>.<REGION>.azurecontainerapps.io |
CONTAINER_APP_ENV_DNS_SUFFIX |
Container Apps 環境の DNS サフィックス。 アプリの完全修飾ドメイン名 (FQDN) を取得するには、$CONTAINER_APP_NAME.$CONTAINER_APP_ENV_DNS_SUFFIX という形式で DNS サフィックスにアプリ名を追加します。 |
<DEFAULT_HOSTNAME>.<REGION>.azurecontainerapps.io |
CONTAINER_APP_PORT |
コンテナー アプリのターゲット ポート。 |
8080 |
CONTAINER_APP_REPLICA_NAME |
コンテナー アプリのレプリカの名前。 |
my-containerapp--20mh1s9-86c8c4b497-zx9bq |
ジョブ
Container Apps ジョブに対して次の変数を使用できます。
変数名 |
説明 |
値の例 |
CONTAINER_APP_JOB_NAME |
ジョブの名前。 |
my-job |
CONTAINER_APP_JOB_EXECUTION_NAME |
ジョブ実行の名前。 |
my-job-iwpi4il |
次のステップ