Share via


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 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 コンテナー レジストリを作成します。

  1. Azure リソース グループを作成します。

    az group create \
        --name <resourceGroupName> \
        --location eastus
    
  2. Azure コンテナー レジストリを作成します。

    az acr create \
        --resource-group <resourceGroupName> \
        --name <azureContainerRegistryName> \
        --sku basic \
        --admin-enabled true
    
  3. Azure コンテナー インスタンスにサインインします。

    az acr login --name <azureContainerRegistryName>  
    

<resourceGroupName><azureContainerRegistryName> を、適切な値に置き換えます。 Azure コンテナー レジストリ名はグローバルに一意にする必要があることに注意してください。

Docker イメージを構築してプッシュする

Azure Container Registry を作成したら、サンプルの Go Web アプリの Docker イメージを構築してプッシュします。

次のコマンドを実行して、イメージを構築し、レジストリにプッシュします。

  1. サインイン サーバー情報を取得します。

    az acr show \
        --name <azureContainerRegistryName> \
        --resource-group <resourceGroupName> \
        --query loginServer \
        --output tsv  
    
  2. Docker イメージをローカルでビルドします。

    docker build -t <loginServer>/<imageName>:latest .
    
  3. Docker イメージを Azure Container Registry にプッシュします。

    docker push <loginServer>/<imageName>:latest
    
  4. イメージが Azure Container Registry に正常にプッシュされたことを確認します。

    az acr repository list \
        --name <azureContainerRegistryName> \
        --output table
    

loginServerimageNameazureContainerRegistryName を適切な値に置き換えます。 イメージ名は、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 環境を作成します。

  1. Azure Container Registry 管理者パスワードを取得します。

    ACR_PASSWORD=$(az acr credential show \
        --name <azureContainerRegistryName> \
        --query 'passwords[0].value' \
        --out tsv)
    
  2. 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

次のステップ