Go Web アプリを Azure Container Apps にデプロイする
このクイックスタートでは、コンテナー化された Go Web アプリを Azure Container Apps にデプロイする方法について説明します。
Azure Container Apps を使用すると、任意のコンテナー内でアプリケーション コード パッケージを実行できます。複雑なクラウド インフラストラクチャや複雑なコンテナー オーケストレーターを管理したり、ランタイムやプログラミング モデルについて心配したりする必要はありません。 Azure Container Apps の一般的な用途には、API エンドポイントのデプロイ、バックグラウンド処理アプリケーションのホスト、イベントドリブン処理の取り扱い、マイクロサービスの実行があります。
このチュートリアルに従って、Docker イメージの構築、そのイメージの Azure Container Registry へのデプロイ、Azure Container Apps への Go Web アプリのデプロイの手順を確認します。
前提条件
- Azure サブスクリプション:Azure サブスクリプションをお持ちでない場合は、開始する前に無料アカウントを作成してください。
- Go がインストールされていること: バージョン 1.18 またはそれ以上
- Docker Desktop
サンプル アプリ をダウンロードする
このチュートリアルに従うには、コンテナー化するサンプル アプリケーションが必要です。 Go Web アプリのサンプルは、msdocs-go-webapp-quickstart GitHub リポジトリ内に用意されています。 サンプル アプリケーションをダウンロードするか、ローカル ワークステーションに複製します。
git clone https://github.com/Azure-Samples/msdocs-go-webapp-quickstart.git
cd msdocs-go-webapp-quickstart
Azure Container Registry を作成する
Azure Container Registry を使用すると、コンテナー イメージを構築、格納、管理できます。 これを使用して、前に説明したサンプル リポジトリに用意されているサンプル Go Web アプリを含む Docker イメージを格納します。
次のコマンドを実行して、Azure コンテナー レジストリを作成します。
Azure リソース グループを作成します。
az group create \ --name <resourceGroupName> \ --location eastus
Azure コンテナー レジストリを作成します。
az acr create \ --resource-group <resourceGroupName> \ --name <azureContainerRegistryName> \ --sku basic \ --admin-enabled true
Azure コンテナー インスタンスにサインインします。
az acr login --name <azureContainerRegistryName>
<resourceGroupName>
と <azureContainerRegistryName>
を、適切な値に置き換えます。 Azure コンテナー レジストリ名はグローバルに一意にする必要があることに注意してください。
Docker イメージを構築してプッシュする
Azure Container Registry を作成したら、サンプルの Go Web アプリの Docker イメージを構築してプッシュします。
次のコマンドを実行して、イメージを構築し、レジストリにプッシュします。
サインイン サーバー情報を取得します。
az acr show \ --name <azureContainerRegistryName> \ --resource-group <resourceGroupName> \ --query loginServer \ --output tsv
Docker イメージをローカルでビルドします。
docker build -t <loginServer>/<imageName>:latest .
Docker イメージを Azure Container Registry にプッシュします。
docker push <loginServer>/<imageName>:latest
イメージが Azure Container Registry に正常にプッシュされたことを確認します。
az acr repository list \ --name <azureContainerRegistryName> \ --output table
loginServer
、imageName
、azureContainerRegistryName
を適切な値に置き換えます。 イメージ名は、Azure Container Registry にプッシュされ、後で Azure Container Apps にデプロイするために使用される Docker イメージです。
Azure Container Registry で使用可能なイメージが得られたので、Azure Container App とその環境をデプロイする準備ができました。
Azure Container Apps 環境を作成する
Azure Container Apps にはコンテナー オーケストレーターの複雑さはありませんが、Azure Container Apps 環境が入る、セキュリティで保護された境界を確立するためのなんらかの方法が必要です。 同じ環境にデプロイされたコンテナー アプリは、同じ仮想ネットワークを共有し、同じ Log Analytics ワークスペースにログを書き込みます。 Azure Container App をデプロイする前に、デプロイ先の環境が必要になります。
次のコマンドを実行して、Azure Container Apps 環境を作成します。
Azure Container Registry 管理者パスワードを取得します。
ACR_PASSWORD=$(az acr credential show \ --name <azureContainerRegistryName> \ --query 'passwords[0].value' \ --out tsv)
Container Apps 環境を作成します。
az containerapp env create \ --name <containerAppEnvName> \ --resource-group <resourceGroupName> \ --location "East US"
Azure Container Apps をデプロイする
この時点で、Azure コンテナー レジストリを作成し、Docker イメージをビルドしてプッシュし、Azure Container Apps 環境を作成しました。 後はアプリケーションをデプロイするだけです。
次のコマンドを実行して、Go Web アプリを Azure Container Apps にデプロイします。
az containerapp create \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--environment <containerAppEnvName> \
--image "<loginServer>/<imageName>:latest" \
--registry-server "<loginServer>" \
--registry-username "<azureContainerRegistryName>" \
--registry-password "$ACR_PASSWORD" \
--target-port 8080 \
--ingress 'external'
Web アプリの URL を確認する
次の Azure CLI コマンドを実行して、Web アプリケーションのイングレスの FQDN (完全修飾ドメイン名) を取得します。
APP_FQDN=$(az containerapp show \
--name <containerAppName> \
--resource-group <resourceGroupName> \
--query properties.configuration.ingress.fqdn \
--output tsv)
次に、FQDN に対して curl コマンドを実行し、Web サイトの HTML が出力に反映されていることを確認します。
curl "https://$APP_FQDN"
リソースをクリーンアップする
サンプル アプリを使い終わったら、Azure からアプリのすべてのリソースを削除できます。 これにより、継続的な料金が回避され、Azure サブスクリプションの整合性を維持できます。 リソース グループを削除して、リソース グループ内のすべてのリソースも削除することが、アプリのすべての Azure リソースを削除する最も簡単な方法です。
az group delete \
--name <resourceGroupName> \
--no-wait
次のステップ
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示