Docker YAML を使用して Docker イメージをビルドし、Azure Container Registry にプッシュします。
Azure DevOps Services
このチュートリアルでは、Azure Pipelines Docker テンプレートに基づくパイプラインを使用して、コンテナ化されたアプリケーションを構築し、Azure Container Registry にプッシュする方法について説明します。 このテンプレートでは、新しいコード リポジトリの変更によってパイプラインがトリガーされ、更新された Docker イメージをビルドしてレジストリに発行する継続的インテグレーション YAML パイプラインが設定されます。
Docker コンテナー テンプレート パイプラインは、Microsoft がホストするエージェントを使用し、Azure Container Registry へのサービス プリンシパル ベースのサービス接続を作成します。 セルフホステッド エージェントと自分で作成したサービス接続を使用して同様のプロセスを実行するパイプラインについては、「Docker イメージをビルドして Azure Container Registry にプッシュする」を参照してください。
前提条件
リソースの作成と構成のアクセス許可を持つ Azure アカウント。 Azure アカウントを持っていない場合は、無料アカウントにサインアップできます。
パイプラインを作成するし、アプリをデプロイするアクセス許可を持つ Azure DevOps 組織とプロジェクト。 組織またはプロジェクトを作成するには、「新しい組織を作成する」または「Azure DevOps でプロジェクトを作成する」を参照してください。
GitHub アカウント。
重要
次の手順で GitHub を使用すると、GitHub サービス接続の作成、GitHub へのサインイン、GitHub 組織への認証、Azure Pipelines のインストール、または Azure Pipelines の承認を求められる場合があります。 画面上の指示に従って、プロセスを完了します。 詳細については、「Github リポジトリへのアクセス」を参照してください。
サンプル アプリを入手する
GitHub で、Sample Docker and Kubernetes Node.JS app リポジトリをフォークまたは複製します。
コンテナー レジストリを作成する
Azure Portal の上部にあるメニュー バーのアイコンを選択して Azure Cloud Shell にサインインします。 Bash シェルをかならず使用します。
Cloud Shell で次のコマンドを実行し、Azure CLI を使用してリソース グループと Azure Container Registry を作成します。 Container Registry 名は小文字で入力する必要があります。
az group create --name myapp-rg --location eastus az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
Docker イメージを Azure Container Registry にデプロイするには、レジストリの管理者ユーザー アカウントを有効にする必要があります。このアカウントは既定で無効になっています。 レジストリの管理者ユーザーを有効にするには、
az acr update
コマンドで--admin-enabled
パラメータを使用します。 詳細と指示については、「管理者アカウント」を参照してください。az acr update -n <acrName> --admin-enabled true
または、Azure Portal UI を使用してAzure Container Registry を作成することもできます。 手順については、「Container Registry を作成する」を参照してください。 レジストリを作成した後、[プロパティ] で管理者アカウントを有効にします。
パイプラインを作成する
Azure DevOpsプロジェクトで、このパイプラインが最初のパイプラインである場合は、[パイプライン]>[新規パイプライン] の順に選択するか、[パイプラインを作成] を選択します。
ソース コードの場所として [GitHub] を選択します。
[リポジトリを選択] 画面で、サンプル コード リポジトリを選択します。
[パイプラインの構成] 画面で、[Docker: イメージをビルドし Azure Container Registry にプッシュする] パイプラインを選択します。
[Docker] 画面で、Azure サブスクリプション > [続行] の順に選択します。
ドロップダウン メニューで [Container Registry] を選択し、[イメージ名] を指定したら、[検証と構成] を選択します。
Azure Pipeline は、パイプラインを定義する azure-pipelines.yml ファイルを生成します。
azure-pipelines.yml のコードを見直し、[保存して実]行 を選択します。
必要に応じて、[メッセージをコミット] を編集し、説明を入力します。 次に、[保存して実行] を再度選択し、azure-pipelines.yml ファイルをリポジトリにコミットして、ビルドを開始します。
[ビルド実行] ページには、ビルドの詳細を進行状況が表示されます。 動作中のパイプラインを確認するには、[ジョブ] の [ビルド] を選択します。
パイプラインの詳細
パイプラインは、Docker container テンプレートから生成されます。 ビルドの段階では、[Docker v2 タスク] を使用して、Docker イメージをビルドし、Container Registry にプッシュします。
Docker タスクは、[Docker レジストリ サービス接続] と サービス プリンシパル認証を使用して、パイプラインを有効化し、イメージを Container Registry にプッシュします。 Docker container テンプレートは、パイプラインの作成時に、このサービス接続を生成します。
- stage: Build
displayName: Build and push stage
jobs:
- job: Build
displayName: Build job
pool:
vmImage: $(vmImageName)
steps:
- task: Docker@2
displayName: Build and push an image to container registry
inputs:
command: buildAndPush
repository: $(imageRepository)
dockerfile: $(dockerfilePath)
containerRegistry: $(dockerRegistryServiceConnection)
tags: |
$(tag)
リソースをクリーンアップする
このチュートリアルで作成したリソースの使用が終了したら、これ以上料金が発生しないように、リソースを削除できます。 次の Cloud Shell コマンドを実行して、リソース グループとそれに属するすべてのリソースを削除します。
az group delete --name myapp-rg