Docker テンプレートを使用して Docker イメージをビルドして Azure Container Registry にプッシュする
Azure DevOps Services
このステップバイステップ チュートリアルでは、コンテナ化されたアプリケーションをビルドするために継続的インテグレーション パイプラインを設定する方法について学習します。 新しい pull request によってパイプラインがトリガーされ、Docker イメージがビルドされ、Azure Container Registry に発行されます。
前提条件
GitHub アカウント。 無料の GitHub アカウントを作成します (まだお持ちでない場合)。
Azure DevOps 組織とプロジェクト。 新しい組織と新しいプロジェクトのどちらかまたは両方を作成します (まだお持ちでない場合)。
Azure アカウント。 無料の Azure アカウントにサインアップします (まだお持ちでない場合)。
コードを取得する
pipeline-javascript-docker サンプル アプリケーションをフォークまたはクローンします。
https://github.com/MicrosoftDocs/pipelines-javascript-docker
コンテナー レジストリの作成
Azure にサインインし、右上隅にある [Azure Cloud Shell] を選択します。
次のコマンドを実行して、Azure CLI を使用してリソース グループと Azure Container Registry を作成します。
# Create a resource group az group create --name myapp-rg --location eastus # Create a container registry az acr create --resource-group myapp-rg --name mycontainerregistry --sku Basic
注意
コンテナー レジストリ名は小文字にする必要があります。
Azure portal Web UI を使用して、Azure Container Registry を作成することもできます。 詳細については、「コンテナー レジストリを作成する」を参照してください。
重要
Azure Container Registry から Docker イメージをデプロイするには、管理者ユーザー アカウントを有効にする必要があります。 詳細については、コンテナー レジストリの認証に関する記事を参照してください。
パイプラインを作成する
Azure DevOps 組織にサインインし、プロジェクトに移動します。
[パイプライン] を選択し、[新しいパイプライン] を選択して新しいパイプラインを作成します。
[GitHub YAML] を選択し、[Azure Pipelines の承認] を選択して、リポジトリにアクセスするための適切なアクセス許可を提供します。
GitHub にサインインするように求められる場合があります。 その場合は、GitHub の資格情報を入力し、リポジトリの一覧からリポジトリを選択します。
[構成] タブで、[Docker - イメージをビルドし、Azure Container Registry にプッシュする] タスクを選択してください。
[Azure サブスクリプション] を選択してから [続行] を選択してください。
ドロップダウン メニューから [コンテナー レジストリ] を選択し、コンテナー イメージにイメージ名を指定してください。
完了したら、[検証と構成] を選択してください。
Azure Pipelines によってパイプラインが作成され、次が行われます。
"Docker レジストリ サービス接続" を作成して、パイプラインからコンテナー レジストリにイメージをプッシュできるようにします。
パイプラインを定義する azure-pipelines.yml ファイルを生成します。
パイプライン YAML をレビューし、準備ができたら [保存して実行] を選択します。
コミット メッセージを追加し、[保存して実行] を選択して変更をコミットし、パイプラインを実行します。
パイプラインを実行するときに、実行中のパイプラインを監視する [ビルド] ジョブを選択します。
パイプラインのビルド方法
前のセクションで作成したパイプラインは、"Docker コンテナー テンプレート" YAML から生成されました。 ビルド ステージでは、 Docker タスク Docker@2
を使用して Docker イメージをビルドし、コンテナー レジストリにプッシュします。
- 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)
リソースをクリーンアップする
このアプリケーションを引き続き使用しない場合は、継続的な料金が発生しないように、このチュートリアルで作成したリソースを削除することができます。 次のコマンドを実行して、リソース グループを削除します。
az group delete --name myapp-rg