Azure Pipelines を使用してコンテナー イメージをビルドし、レジストリにプッシュする
Azure DevOps Services
この記事では、Azure Container Registry または Docker Hub に Docker イメージをビルドしてプッシュするためのパイプラインの作成について説明します。
前提条件
製品 | 要件 |
---|---|
Azure DevOps | - Azure DevOps プロジェクト。 - アクセス許可: - プロジェクト内のすべてのパイプラインへのアクセスを許可するには、プロジェクト管理者グループのメンバーである必要があります。 - サービス接続を作成するには、サービス接続に対する管理者または作成者ロールが必要です。 - セルフホステッド エージェントを使用している場合は、Docker がインストールされ、Docker エンジンが昇格された特権で実行されていることを確認します。 Microsoft がホストするエージェントには、Docker がプレインストールされています。 |
GitHub | - GitHub アカウント。 - Dockerfile を含む GitHub リポジトリ。 独自のプロジェクトがない場合は、サンプル リポジトリを使用します。 - Azure Pipelines を承認するための GitHub サービス接続。 |
Azure | - Azure サブスクリプション。 - Azure Container Registry。 |
製品 | 要件 |
---|---|
Azure DevOps | - Azure DevOps プロジェクト。 - アクセス許可: - プロジェクト内のすべてのパイプラインへのアクセスを許可するには、プロジェクト管理者グループのメンバーである必要があります。 - サービス接続を作成するには、サービス接続に対する管理者または作成者ロールが必要です。 - セルフホステッド エージェントを使用している場合は、Docker がインストールされ、Docker エンジンが昇格された特権で実行されていることを確認します。 Microsoft がホストするエージェントには、Docker がプレインストールされています。 |
GitHub | - GitHub アカウント。 - Dockerfile を含む GitHub リポジトリ。 独自のプロジェクトがない場合は、サンプル リポジトリを使用します。 - Azure Pipelines を承認するための GitHub サービス接続。 |
Docker Hub | - Docker Hub アカウント。 - Docker Hub イメージ リポジトリ。 |
Docker レジストリ サービス接続を作成する
コンテナー イメージをレジストリにプッシュする前に、Azure DevOps でサービス接続を作成する必要があります。 このサービス接続には、コンテナー レジストリで安全に認証するために必要な資格情報が格納されます。 詳細については、Docker レジストリ サービス接続
Azure DevOps プロジェクトで、[サービス接続]
[プロジェクト設定] 選択します。 [新しいサービス接続] と [Docker レジストリ] を選択します。
Docker Hub
選択し、次の情報を入力します。 フィールド 説明 Docker ID Docker ID を入力します。 Docker パスワード Docker パスワードを入力します。 サービス接続名 サービス接続の名前を入力します。 すべてのパイプラインにアクセス許可を付与する すべてのパイプラインへのアクセスを許可するには、このオプションを選択します。 を選択し、確認して保存します。
Docker イメージをビルドしてプッシュするパイプラインを作成する
Docker@2 タスクは、イメージをビルドしてコンテナー レジストリにプッシュするために使用されます。 Docker@2 タスクは、Azure Pipelines 内で Docker イメージを構築、プッシュ、管理するプロセスを効率化するように設計されています。 このタスクは、ビルド、プッシュ、ログイン、ログアウト、開始、停止、実行など、さまざまな Docker コマンドをサポートしています。
Docker@2 タスクを使用してイメージをビルドおよびプッシュする YAML パイプラインを作成するには、次の手順を実行します。
Azure DevOps プロジェクトで、Pipelines を選択し、新しいパイプラインを作成します。
ソース コードの場所として GitHub を選択し、リポジトリを選択します。
- サインインするために GitHub にリダイレクトされた場合は、GitHub の資格情報を入力します。
- Azure Pipelines アプリをインストールするために GitHub にリダイレクトされた場合は、[承認してインストール] を選択します。
リポジトリを選択します。
Starter パイプライン テンプレートを選択して、基本的なパイプライン構成を作成します。
azure-pipelines.yml の内容を次のコードに置き換えます。
trigger: - main pool: vmImage: 'ubuntu-latest' variables: repositoryName: '<target repository name>' steps: - task: Docker@2 inputs: containerRegistry: '<docker registry service connection>' repository: $(repositoryName) command: 'buildAndPush' Dockerfile: '**/Dockerfile'
パイプライン YAML ファイルを次のように編集します。
<target repository name>
は、イメージをプッシュするコンテナー レジストリ内のリポジトリの名前に置き換えます。<docker registry service connection>
を、先ほど作成した Docker レジストリ サービス接続の名前に置き換えます。
完了したら、[保存して実行]>[保存して実行] を選択します。
ジョブ を選択してログを表示し、パイプラインが正常に実行されたことを確認します。
Azure DevOps プロジェクトに移動し、左側のメニューから [パイプライン] を選択します。
新しいパイプラインを選択してください。
ソース コードの場所として GitHub を選択し、リポジトリを選択します。
- サインインするために GitHub にリダイレクトされた場合は、GitHub の資格情報を入力します。
- Azure Pipelines アプリをインストールするために GitHub にリダイレクトされた場合は、[承認してインストール] を選択します。
Docker - Build を選択し、Azure Container Registry テンプレートにイメージをプッシュします。
Azure サブスクリプションを選択し、[続行] を選択します。
コンテナー レジストリを選択し、次に 検証と構成を選択します。
YAML パイプラインの例:
# Docker # Build and push an image to Azure Container Registry # https://docs.microsoft.com/azure/devops/pipelines/languages/docker trigger: - main resources: - repo: self variables: # Container registry service connection established during pipeline creation dockerRegistryServiceConnection: '7f9dc28e-5551-43ee-891f-33bf61a995de' imageRepository: 'usernamepipelinesjavascriptdocker' containerRegistry: 'repoistoryname.azurecr.io' dockerfilePath: '$(Build.SourcesDirectory)/app/Dockerfile' tag: '$(Build.BuildId)' # Agent VM image name vmImageName: 'ubuntu-latest' stages: - stage: Build displayName: Build and push stage jobs: - job: Build displayName: Build 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)
を選択して「保存して実行」をし、 を実行し、再度 を選択して「保存して実行」し、 をもう一度実行します。
ジョブ を選択してログを表示し、パイプラインが正常に実行されたことを確認します。
Docker テンプレートは、Azure Container Registry へのサービス接続を作成し、Docker@2 タスクを使用して Docker イメージをビルドし、レジストリにプッシュします。
Docker@2 タスクは、Azure Pipelines 内で Docker イメージを構築、プッシュ、管理するプロセスを効率化するように設計されています。 このタスクは、ビルド、プッシュ、ログイン、ログアウト、開始、停止、実行など、さまざまな Docker コマンドをサポートしています。
セルフホステッド エージェントを使用する場合は、エージェントのホストに Docker がインストールされていることと、昇格された特権で Docker エンジン/デーモンが実行されていることを確認します。
関連記事
- コンテナー イメージ をビルドする
- Docker コンテンツの信頼