本トピックでは、Container Registry Personal Edition インスタンスを使用してソースコードリポジトリを連携し、イメージリポジトリを作成し、構築ルールを設定してイメージの構築をトリガーする方法について説明します。これらの手順を完了すると、Container Registry は、指定したブランチまたはタグにコードをプッシュするたびに、自動的に新しいイメージを構築します。
前提条件
以下の前提条件が満たされていることを確認してください。
-
対象リージョンに Container Registry Personal Edition インスタンスが存在すること。
-
そのインスタンス内に名前空間が作成済みであること。手順については、「名前空間の管理」をご参照ください。
-
有効な Dockerfile を含むリポジトリを持つ GitHub、Gitee、または GitLab アカウントを保有していること。
-
Container Registry Personal Edition インスタンスを管理するのに十分な権限を保有していること。
Container Registry Personal Edition の構築タイムアウトは 30 分です。柔軟な構成、カスタム構築パラメーター、マルチアーキテクチャ対応のイメージ構築が必要な場合は、代わりに Container Registry Enterprise Edition をご使用ください。詳細については、「Container Registry Enterprise Edition インスタンスを使用したイメージの構築」をご参照ください。
ベースイメージの要件
Personal Edition インスタンスでイメージを構築する前に、Dockerfile で参照されるベースイメージが以下の要件を満たしていることを確認してください。
|
サポート |
要件 |
|
サポート対象 |
認証不要でインターネット経由で公開アクセス可能なイメージ。 |
|
サポート対象 |
Personal Edition インスタンスと同じアカウントおよびリージョンに属するプライベートインターネットイメージ(例:同一リージョン内の Container Registry Personal Edition イメージ、またはインターネット経由で公開アクセス可能なイメージ)。 |
|
非サポート |
Personal Edition インスタンスとは異なるリージョンに配置されたプライベートイメージ。 |
|
非サポート |
リージョンに関係なく、仮想プライベートクラウド (VPC) 向けに構築または最適化されたイメージ。 |
|
非サポート |
インターネットからアクセスできないプライベートイメージ。 |
イメージ構築に使用されるソースコードは、中国本土以外のソースコードリポジトリに保存されている場合があります。Container Registry は、中国本土以外のソースコードをプルする可能性があります。
ステップ 1:ソースコードリポジトリのバインド
本例では GitHub を使用します。その他のソースコードリポジトリ(Gitee、GitLab)をバインドする手順については、「ソースコードホスティングプラットフォームのバインド」をご参照ください。
VPC 内でホストされるプライベート GitLab リポジトリをバインドするには、「VPC 内でのコンテナイメージの構築」をご参照ください。
Container Registry コンソールにログインします。
上部のナビゲーションバーからリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、管理対象の Personal Edition インスタンスをクリックします。
-
インスタンス管理ページの左側ナビゲーションウィンドウで、 を選択します。
-
[コードソース] ページで、[GitHub] 行を見つけ、[アクション] 列の [アカウントをバインド] をクリックします。
-
GitHub ダイアログボックスで、アカウントをバインドするため、ソースコードリポジトリに移動 をクリックします。
-
GitHub のサインインページで、ユーザー名とパスワードを入力し、サインイン をクリックします。
Container Registry コンソールへリダイレクトされ、アカウントが正常にバインドされた旨の確認メッセージが表示されます。
ステップ 2:リポジトリ情報の設定
リポジトリを作成する前に、名前空間が存在している必要があります。名前空間を作成していない場合は、「名前空間の管理」をご参照ください。
Container Registry コンソールにログインします。
上部のナビゲーションバーからリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、管理対象の Personal Edition インスタンスをクリックします。
-
インスタンス管理ページの左側ナビゲーションウィンドウで、 を選択します。
-
リポジトリ ページで、リポジトリの作成 をクリックします。
-
リポジトリ情報 ステップで、以下のフィールドを設定します。
フィールド
説明
名前空間
リポジトリが所属する名前空間を選択します。
リポジトリ名
リポジトリの名前を入力します。小文字、数字、ハイフン (-)、アンダースコア (_) のみ使用できます。
リポジトリタイプ
非公開(許可されたユーザーのみアクセス可能)または 公開(認証なしで誰でもアクセス可能)を選択します。
概要
(任意)リポジトリの簡単な説明を入力します。
説明オンプレミスのリポジトリに基づいてイメージを構築することはできません。
-
次へ をクリックします。
ステップ 3:コードソースおよび構築設定の構成
-
コードソース ステップで、コードソース、構築設定、構築ルール の各セクションを設定します。
コードソース では、ソースコードリポジトリのプラットフォーム(例:GitHub)を選択し、Dockerfile を含む名前空間およびリポジトリを指定します。
構築設定 では、以下のオプションを設定します。
オプション
説明
コード変更時に自動的にイメージを構築
有効にすると、ブランチへのコミット時に構築ルールが自動的にトリガーされます。Webhook により、ソースコードリポジトリと ACR が接続され、これらのイベントを検出します。
中国本土以外のサーバーで構築
有効にすると、イメージは中国本土以外のサーバーで構築され、その後指定リージョンのリポジトリにプッシュされます。ソースコードが中国本土以外にホストされている場合にこのオプションを有効化します。ソースコードとコンテナイメージリポジトリの両方が中国本土にある場合は、中国本土以外のサーバーで構築 を無効化し、中国本土の構築環境をご利用ください。
キャッシュを使用せずに構築
有効にすると、各構築はベースイメージを新規にプルして行い、キャッシュされたレイヤーは使用しません。これにより構築時間が延長される可能性があります。キャッシュを使用せずに構築 を無効化することで構築を高速化できます。
-
リポジトリの作成 をクリックします。
ステップ 4:構築ルールの構成
構築ルールは、どのブランチまたはタグが構築をトリガーするか、および Dockerfile の場所を定義します。
リポジトリ管理ページの左側ナビゲーションウィンドウに 構築 が表示されない場合、ソースコードリポジトリが Personal Edition インスタンスにバインドされていません。再度「ステップ 1」に戻り、ソースコードリポジトリを再バインドしてください。
Container Registry コンソールにログインします。
上部のナビゲーションバーからリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、管理対象の Personal Edition インスタンスをクリックします。
-
インスタンス管理ページの左側ナビゲーションウィンドウで、 を選択します。
-
リポジトリ ページで、管理対象のリポジトリを見つけ、管理 をクリックします。
-
リポジトリ管理ページの左側ナビゲーションウィンドウで、構築 をクリックします。
-
構築ルール セクションで、構築ルールの追加 をクリックします。
説明既存の構築ルールを変更するには、該当ルールを見つけ、変更 をクリックします。
-
構築ルールの追加 ダイアログボックスで、以下のパラメーターを設定し、確認 をクリックします。
パラメーター
説明
タイプ
トリガー元の種類です。ブランチ を選択すると、ブランチへのコミット時に構築がトリガーされます。タグ を選択すると、一致するタグがプッシュされたときに構築がトリガーされます。
コードブランチ/タグ
構築ルールをトリガーする特定のブランチ名またはタグパターンです。
構築コンテキストディレクトリ
ブランチまたはタグ内の、構築コンテキストとして使用されるサブディレクトリです。たとえば、Dockerfile がブランチのルート直下にある場合は、このフィールドを空欄のままにするか、
/を入力します。Dockerfile がappという名前のサブディレクトリ内にある場合は、app/を入力します。Dockerfile のファイル名
Dockerfile のファイル名です。デフォルト値は
Dockerfileです。Dockerfile が標準外のファイル名を使用している場合にのみ、この値を変更します。タグ
構築されたイメージに適用するイメージタグです。例:
latest。動的なタグ付けには、ブランチ名やコミット SHA などの変数を使用できます。
ステップ 5:イメージの構築
コード変更時に自動的にイメージを構築 のトグルが有効かどうかにかかわらず、いつでも手動で構築をトリガーできます。
Container Registry コンソールにログインします。
上部のナビゲーションバーからリージョンを選択します。
左側のナビゲーションウィンドウで、インスタンス をクリックします。
インスタンス ページで、管理対象の Personal Edition インスタンスをクリックします。
-
インスタンス管理ページの左側ナビゲーションウィンドウで、 を選択します。
-
「[リポジトリ]」ページで、管理したいリポジトリを見つけ、「[操作]」列の「[管理]」をクリックします。
-
リポジトリ管理ページの左側ナビゲーションウィンドウで、構築 をクリックします。
-
「構築ルール」セクションで、使用する構築ルールを見つけ、[アクション] 列の [ビルド] をクリックします。
構築が完了すると、リストに構築記録が表示されます。
説明ビルドログを表示するには、ビルドレコードを見つけ、[Log] を [Actions] 列でクリックします。ビルドが失敗した場合は、Dockerfile の欠落、ベースイメージへのアクセス不能、またはビルドタイムアウト(Personal Edition のタイムアウトは 30 分です)などのエラーをログで確認してください。
-
構築が完了したら、左側ナビゲーションウィンドウで タグ をクリックし、イメージタグが正常に作成されたことを確認します。
一般的な構築失敗のトラブルシューティング
|
症状 |
原因の可能性 |
操作 |
|
左側ナビゲーションウィンドウに 構築 が表示されない |
ソースコードリポジトリがバインドされていない |
ステップ 1 に戻り、ソースコードリポジトリを再バインドしてください。 |
|
構築が即座に失敗する |
構成されたパスに Dockerfile が見つからない |
構築ルール内の Dockerfile のファイル名 および 構築コンテキストディレクトリ が、リポジトリ内の実際のファイル位置と一致しているか確認してください。 |
|
ベースイメージに関するエラーで構築が失敗する |
ベースイメージにアクセスできない |
ベースイメージがインターネット経由で公開アクセス可能であるか、または同じアカウントおよびリージョンに属しているか確認してください。VPC 最適化イメージおよびサードパーティのプライベートイメージはサポートされていません。 |
|
構築がタイムアウトする |
構築が 30 分の制限時間を超過した |
Dockerfile を最適化する(例:マルチステージビルドを活用してイメージサイズを削減)、またはより長い構築タイムアウトを提供する Container Registry Enterprise Edition に切り替えてください。 |
次のステップ
構築が成功した後は、リポジトリの管理およびイメージの利用が可能です。
イメージの表示および利用
-
イメージのプッシュおよびプル:「Container Registry Personal Edition インスタンスのイメージリポジトリへのイメージのプッシュおよびプル」をご参照ください。
-
クラスターへのデプロイ:構築されたイメージを使用して、Container Service for Kubernetes (ACK) 上でアプリケーションをデプロイします。
リポジトリの管理
-
構築履歴の表示:リポジトリ管理ページで 構築 をクリックし、過去のすべての構築記録およびそのステータスを確認します。
-
構築ログの表示:構築記録を見つけ、ログ をクリックして、構築の問題を診断します。
-
構築ルールの変更:構築ルール セクションで、ルールを見つけ、変更 をクリックして、トリガー条件または Dockerfile 設定を更新します。
高度な機能へのアップグレード
-
Enterprise Edition へのアップグレード:柔軟な構築構成、カスタムパラメーター、マルチアーキテクチャ対応の構築、強化されたセキュリティ制御などの高度な機能を利用するには、「Container Registry Enterprise Edition インスタンスを使用したイメージの構築」をご参照ください。