次の方法で共有


クイックスタート: Azure Pipelines を使用してアプリをデプロイするコンテナー イメージをビルドする

Azure DevOps Services

このクイック スタートでは、Azure Pipelines を使用してアプリのデプロイ用のコンテナー イメージを構築する方法について説明します。 このイメージをビルドするには、リポジトリに Dockerfile のみが必要です。 パイプラインで使用するエージェントに応じて、Linux または Windows コンテナーを構築できます。

前提条件

カテゴリ 要求事項
Azure DevOps - Azure DevOps プロジェクト
- Microsoft がホストするエージェントでパイプラインを実行する機能。 並列ジョブを購入することも、Free レベルを要求することもできます。
- YAML と Azure Pipelines に関する基本的な知識。 詳細については、「最初のパイプラインの作成」を参照してください。
- アクセス許可:
     パイプラインを作成するには、ユーザーが 共同作成者 グループに含まれている必要があり、グループには [ ビルド パイプラインの作成 ] アクセス許可が [許可] に設定されている必要があります。 ビルド管理者グループとプロジェクト管理者グループのメンバーは、パイプラインを管理することもできます。
GitHubの - GitHub アカウント。
- Azure Pipelines を承認するための GitHub サービス接続
紺碧 Azure サブスクリプション

サンプル リポジトリをフォークする

ブラウザーで、次のサンプル リポジトリに移動し、自身の GitHub アカウントにフォークします。

https://github.com/MicrosoftDocs/pipelines-javascript-docker

Linux または Windows イメージをビルドする

  1. Azure DevOps 組織にサインインし、プロジェクトに移動します。

  2. [パイプライン] に移動し、プロジェクトで最初のパイプラインを作成する場合は [新しいパイプライン] または [パイプラインの作成] を選択します。

  3. ソース コードの場所として、[GitHub] を選択します。

  4. リポジトリを選んでから、[スタート パイプライン] を選択します。

    • サインインするために GitHub にリダイレクトされた場合は、GitHub の資格情報を入力します。
    • Azure Pipelines アプリをインストールするために GitHub にリダイレクトされた場合は、[承認してインストール] を選択します。
  5. azure-pipelines.yml の内容を次のコードに置き換えます。 Linux アプリと Windows アプリのどちらをデプロイするかに応じて、 vmImageubuntu-latest または windows-latest に設定します。

     trigger:
     - main
    
     pool:
       vmImage: 'ubuntu-latest' 
    
     variables:
       imageName: 'pipelines-javascript-docker'
    
     steps:
     - task: Docker@2
       displayName: Build an image
       inputs:
         repository: $(imageName)
         command: build
         Dockerfile: app/Dockerfile
    
  6. 完了したら、[保存して実行] を選択します。

  7. azure-pipelines.yml ファイルをリポジトリに追加すると、コミット メッセージを追加するように求められます。 メッセージを入力し、[保存して実行] を選択します。

セルフホステッド エージェントを使用する場合は、エージェントのホストに Docker がインストールされていること、および Docker エンジン/デーモンが昇格された特権で実行されていることを確認します。

イメージをビルドするには、エージェントのホストに Docker をインストールし、Docker エンジン/デーモンを管理者特権で実行する必要があります。 YAML パイプライン エディターを使用してパイプラインを作成するには、次の手順に従います。

  1. コレクションに移動し、プロジェクトを作成します。
  2. プロジェクト内で、[パイプライン] を選択します。
  3. [Create Pipeline] を選択します。
  4. ソース コードの場所として [GitHub Enterprise Server] を選択します。
  5. まだであれば、GitHub Enterprise Server アカウントに接続する Azure Pipelines を承認します。
    1. [GitHub Enterprise Server に接続する] を選択します。
    2. アカウントの詳細を入力し、[確認して保存] を選択します。
  6. リポジトリを選択します。 Azure Pipelines アプリをインストールするために GitHub にリダイレクトされた場合は、[承認してインストール] を選択します。
  7. パイプラインを構成するには、[Docker イメージのビルド] テンプレートを選択します。
  8. YAML パイプラインで、YAML ファイルの内容を次のコードに置き換えます。 プール名を、セルフホステッド エージェントを含むプールの名前に Docker 機能を使用して置き換えます。
# Docker
# Build a Docker image
# https://docs.microsoft.com/azure/devops/pipelines/languages/docker

trigger:
- main

pool:
  name: default
  demands: docker

variables:
  imageName: 'pipelines-javascript-docker'

steps:
 - task: Docker@2
   displayName: Build an image
   inputs:
     repository: $(imageName)
     command: build
     Dockerfile: '$(Build.SourcesDirectory)/app/Dockerfile'

  1. [保存して実行] を選択します。
  2. [保存して実行] ページで、もう一度 [保存して実行] を選択します。

Docker イメージのビルドの詳細については、このサンプル アプリケーションで使用されている Docker タスクを参照してください。 コマンド ライン タスクを使用して、Docker コマンドを直接呼び出すこともできます。

コンテナー イメージがビルドされ、エージェントに格納されます。 イメージを Google Container Registry、Docker Hub、または Azure Container Registry にプッシュします。 詳細については、Docker Hub または Google Container Registry へのイメージのプッシュまたは Azure Container Registry へのイメージのプッシュに関する情報を参照してください。

リソースをクリーンアップする

このアプリケーションを引き続き使用する予定がない場合は、パイプラインとコード リポジトリを削除します。

よく寄せられる質問

コンテナー イメージをビルドするために使用できるエージェントは何ですか?

  • Microsoft ホステッド Ubuntu エージェントまたは Linux プラットフォーム ベースのセルフホステッド エージェントを使うと、Linux コンテナー イメージをビルドできます。

  • Microsoft ホステッド Windows エージェントまたは Windows プラットフォーム ベースのセルフホステッド エージェントを使うと、Windows コンテナー イメージをビルドできます。 すべての Microsoft ホステッドで Windows プラットフォーム ベースのエージェントには、Docker のビルドに必要な Moby エンジンとクライアントが付属しています。

  • Microsoft がホストする macOS エージェントを使用してコンテナー イメージをビルドすることはできません。これは、イメージのビルドに必要な Moby エンジンがこれらのエージェントにプレインストールされていないためです。

詳しくは、Microsoft ホステッド エージェントで使用できる Windows と Linux のエージェントのオプションに関する記事をご覧ください。

ホステッド エージェントでは、どのような事前キャッシュ済み Docker イメージを使用できますか?

コンテナー レジストリからすべてのジョブの Docker イメージをプルする時間を節約するために、一般的に使用されるイメージの一部は、Microsoft がホストするエージェントに事前キャッシュされます。

Docker ビルドの BuildKit 変数はどのように設定しますか?

BuildKit では、パフォーマンス、ストレージ管理、機能、セキュリティに関するビルドの機能強化が行われています。 BuildKit は現在、Windows ホストではサポートされていません。

BuildKit を使用して Docker ビルドを有効にするには、DOCKER_BUILDKIT 変数を設定します。

trigger:
- main
   
pool:
  vmImage: 'ubuntu-latest'
   

variables:
  imageName: 'pipelines-javascript-docker'
  DOCKER_BUILDKIT: 1
    
steps:
- task: Docker@2
  displayName: Build an image
  inputs:
    repository: $(imageName)
    command: build
    Dockerfile: app/Dockerfile

セルフホステッド エージェントを使うにはどうすればよいですか?

Docker をインストールし、エンジンまたはデーモンをエージェントのホストで実行する必要があります。 Docker がインストールされていない場合は、 Docker インストーラー タスク をパイプラインに追加します。 Docker タスクの前に Docker インストーラー タスク を追加 します

Docker タスクを使用する代わりに、スクリプトベースの Docker ビルドを作成するにはどうすればよいですか?

build コマンドまたはその他の Docker コマンドを使用できます。

docker build -f Dockerfile -t foobar.azurecr.io/hello:world .

このコマンドにより、Docker タスクでビルドされたものと同等のイメージが作成されます。 内部的に、Docker タスクによって、スクリプトで Docker バイナリが呼び出され、さらにいくつかのコマンドが結合され、さらにいくつかの利点が得られます。 詳しくは、Docker タスクに関するページを参照してください。

Azure Pipelines でのビルド中にレイヤー キャッシュを再利用できますか?

Microsoft でホストされるエージェントを使用する場合、すべてのジョブは 、azure-pipelines-image-generation リポジトリ テンプレートから生成されたイメージに基づいて、新しくプロビジョニングされた仮想マシンにディスパッチされます。 これらの仮想マシンは、ジョブの完了後にクリーンアップされます。 この短期の有効期間により、これらの仮想マシンを以降のジョブに再利用したり、キャッシュされた Docker レイヤーを再利用したりできなくなります。 回避策として、2 つのイメージを生成し、それらを早期にイメージ レジストリにプッシュするマルチステージ ビルドを設定できます。 その後、--cache-from 引数を使用して、これらのイメージをキャッシュ ソースとして使用するように Docker に指示できます。

セルフホステッド エージェントを使用している場合は、短期の有効期間の問題がこれらのエージェントには当てはまらないため、回避策なしで Docker レイヤーをキャッシュできます。

x64 以外のアーキテクチャ用の Linux コンテナー イメージをビルドするにはどうすればよいですか?

Microsoft ホステッド Linux エージェントを使うと、x64 アーキテクチャ用の Linux コンテナー イメージが作成されます。 x86 や ARM プロセッサなどの他のアーキテクチャ用のイメージを作るには、QEMU などのマシン エミュレーターを使用できます。

QEMU を使用して ARM プロセッサ コンテナー イメージを作成するには、次の手順に従います。

  1. ターゲット アーキテクチャに一致する基本イメージを使用して Dockerfile を作成します。

    FROM arm64v8/alpine:latest
    
  2. イメージをビルドする前に、ジョブで次のスクリプトを実行します。

    # register QEMU binary - this can be done by running the following image
    docker run --rm --privileged multiarch/qemu-user-static --reset -p yes
    # build your image
    

詳細については、GitHub の qemu-user-static を参照してください。

コンテナー化されたアプリケーションのテストを実行し、テスト結果を発行するにはどうすればよいですか?

コンテナー化されたアプリケーションをテストし、テスト結果を発行するためのオプションを調べるには、「 テスト結果の発行」タスクを参照してください。

次のステップ

コンテナー イメージをビルドした後、Azure Container Registry、Docker Hub、または Google Container Registry にイメージをプッシュします。 コンテナー レジストリにイメージをプッシュする方法については、次のいずれかの記事を参照してください。