一般的には、docker run -t -i -e 'a=b' ...
のようにローカルマシンでdockerインスタンスを起動します
ここで、以前にDocker Container RegistryにアップロードしたカスタムDockerイメージをデプロイして実行し、上記のコマンドのように、環境変数を指定して起動します。
Azure CLI for WebApps を確認すると、一般的に環境変数の設定が可能であることがわかります。しかし、私にとっては、この「環境変数」はdockerコマンドに渡される環境変数ではないようです。どうして?コンテナープロトコルを確認すると、Dockerコンテナーがどのように起動されるかを確認できます。環境変数が設定されていません。
Azure Container の場合、これはaz container create ... --environment-variables a=b
のように機能します。これらの環境変数はコンテナ/ドッカーに渡されます。そして、これがまさに私がWebAppsを探しているものです。
環境変数から始まる顧客のDockerインスタンスを使用してAzure Webappをデプロイした経験はありますか?
私は問題の解決策を見つけたと思います:
アプリの設定は、実行時に環境変数としてアプリに挿入されます。
アプリケーションの環境変数を設定する必要がある場合は、Azureポータルでアプリ設定を追加するだけです。アプリが実行されると、アプリの設定が環境変数としてプロセスに自動的に挿入されます。
CLIを介してどのように機能するか:
az webapp config appsettings set --name <mycontainername> --resource-group <myresourcegroupname> --settings a='b'
上記のコマンドのように、CLIを介してすべての環境変数を設定すると、うまくいきました。アプリの設定でポータルUIを介して同じことが可能です。 AzureがDockerインスタンスを起動する方法を確認すると、起動時に設定された環境変数がどれも設定されていないことがわかります(.docker run -d -p 3287:3000 --name <mycontainername -e a=b
)ですが、Dockerコンテナにログインし、環境変数に対してecho
コマンドを実行すると、環境変数が挿入されていることがわかります。
注:新しい環境変数を挿入するために、Dockerインスタンスを再起動する必要がある場合があります。