すべてのプロダクト
Search
ドキュメントセンター

Container Registry:Dockerfile を使用した Java アプリケーションイメージのビルド

最終更新日:Jun 16, 2026

Alibaba Cloud Container Registry (ACR) のマルチステージビルドは、ビルド時間を短縮し、安全でコンパクトな Java アプリケーションイメージを生成します。

前提条件

背景情報

イメージビルドにおける一般的な問題

Dockerfile からイメージをビルドする際には、いくつかの課題が生じる可能性があります:

  • Dockerfile の記述が難しい

    開発者がアプリケーションイメージをビルドするための Dockerfile の記述に慣れていない場合があります。

  • イメージが肥大化しやすい

    単一の Dockerfile にコンパイル、テスト、パッケージングを含めると、不要なイメージレイヤーが追加され、階層が複雑になり、イメージファイルのサイズが大きくなります。

  • ソースコードの漏洩リスク

    ソースコードが誤って最終的なイメージに含まれてしまい、セキュリティリスクを生み出す可能性があります。

マルチステージビルドの利点

Java のようなコンパイル言語では、Dockerfile でマルチステージビルドを使用することで、以下の利点が得られます:

  • イメージのセキュリティ向上

    第 1 ステージでは、コンパイル時のベースイメージを使用して依存関係のダウンロード、コンパイル、テスト、アプリケーションのパッケージングを行います。第 2 ステージでは、軽量なランタイムベースイメージを使用し、第 1 ステージからコンパイル済みアーティファクトのみをコピーします。最終的なイメージにはソースコードは含まれません。

  • イメージレイヤーとサイズの最適化

    最終的なイメージには、ベースイメージとコンパイル済みアーティファクトのみが含まれます。これにより、イメージレイヤーが少なくなり、ファイルサイズが小さくなります。

  • ビルド速度の向上

    Docker や BuildKit などのビルドツールは、複数のビルドステージを並行して実行できるため、全体のビルド時間を短縮できます。

ステップ 1: ソースコードリポジトリのバインド

ACR コンソールで、ホストされているコードリポジトリをバインドします。この例では GitHub リポジトリを使用します。

  1. Container Registryコンソールにログインします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. [インスタンス] ページで、管理するPersonal Editionインスタンスをクリックします。

  4. 左側のナビゲーションペインで、リポジトリ > コードソース を選択します。

  5. GitHub の行で、操作 列の アカウントのバインド をクリックします。表示されるダイアログボックスで、ソースコードリポジトリに移動してアカウントをバインドします をクリックして GitHub を開きます。

  6. 認証ページで、[AliyunDeveloper を承認] をクリックします。コードソース ページに戻ると、GitHub のステータスが バインド済み と表示され、バインドが成功したことを示します。

ステップ 2: リポジトリの作成

  1. Container Registryコンソールにログインします。

  2. 上部のナビゲーションバーで、リージョンを選択します。

  3. [インスタンス] ページで、管理するPersonal Editionインスタンスをクリックします。

  4. 左側のナビゲーションペインで、リポジトリ > リポジトリを選択し、リポジトリの作成をクリックします。

  5. リポジトリ情報を設定します。

    パラメーター

    説明

    [リージョン]

    リポジトリが配置されるリージョン。

    中国 (杭州)

    [名前空間]

    リポジトリの名前空間。

    test23432

    [リポジトリ名]

    リポジトリの名前を入力します。

    test

    [リポジトリのタイプ]

    リポジトリタイプはパブリックまたはプライベートです。リポジトリタイプに関係なく、イメージをプッシュするにはログインする必要があります。データを保護するには、プライベートリポジトリを使用してください。

    • パブリック:誰でも認証なしでイメージをプルできます。

    • プライベート:イメージをプルするには認証が必要です。

    プライベート

    [サマリー]

    簡単な説明。

    -

    [説明]

    詳細な説明。Markdown がサポートされています。

    作成した Dockerfile と ACR イメージビルドサービスを使用して、イメージをビルド、パッケージ化、実行します。

  6. 次へ をクリックして、コードソースを設定します。

    パラメーター

    説明

    [コードソース]

    コードソースを GitHub に設定し、バインドされたソースコードリポジトリを選択します。

    [ビルド設定]

    この例では、[コード変更時にイメージを自動的にビルドする]中国本土外のサーバーによるビルド を選択します。

    • Automatically Build Images When Code Changes:ブランチにコードがコミットされたときに、自動的にビルドをトリガーします。

    • [中国本土外のサーバーによるビルド]:中国本土以外のデータセンターでビルドを実行し、生成されたイメージを指定されたリージョンにプッシュします。

    • [キャッシュなしでビルド]:ビルドごとにベースの依存イメージを強制的に再プルするため、ビルド時間が増加する可能性があります。

  7. リポジトリの作成 をクリックします。

    リポジトリが作成されると、リポジトリ詳細ページに基本情報が表示されます。

  8. 左側のナビゲーションペインで、リポジトリ名の左にある23030201アイコンをクリックします。「リポジトリ」ページに、新しいリポジトリが表示されます。ステータス正常 の場合、リポジトリが正常に作成されたことを示します。

ステップ 3: ビルドの実行

  1. 左側のナビゲーションペインで、リポジトリ > リポジトリ を選択します。リポジトリの名前をクリックするか、リポジトリの 操作 列にある 管理 をクリックします。

  2. 左側のナビゲーションペインで、ビルドをクリックします。ビルドルール セクションで、ビルドルールの追加をクリックします。

  3. ビルドルールを設定します。

    パラメーター

    説明

    [タイプ]

    コードがリポジトリにプッシュされたときにビルドルールをトリガーするイベント。有効な値は Branch と Tag です。

    Branch

    [ブランチ/タグ]

    ビルド元のコードブランチ。

    master

    [コンテキストディレクトリをビルド]

    Dockerfile が配置されているディレクトリ。これはコードブランチのルートからの相対パスです。このチュートリアルでは、フルパスは /Dockerfile なので、ここでは / と入力します。

    /

    [Dockerfile ファイル名]

    Dockerfile の名前。デフォルトは Dockerfile です。例えば、フルパスが /Dockerfile の場合は、Dockerfile と入力します。

    Dockerfile

    [イメージのバージョン]

    イメージバージョンのタグ。

    V1.0.0

  4. OK をクリックして Build ページに戻ります。

  5. ビルドルール セクションで、作成したルールを見つけ、対応する 操作 列の ビルド をクリックします。

    ビルドログセクションで、ビルドステータスが成功の場合、ビルドが完了したことを示します。

結果の検証

ビルド済みイメージの表示

左側のナビゲーションペインで、リポジトリ > リポジトリ を選択します。リポジトリ名をクリックするか、操作 列の 管理 をクリックします。リポジトリ詳細ページの左側のナビゲーションペインで イメージのバージョン をクリックすると、ビルドされたイメージが表示されます。

イメージの実行

2024 年 9 月 9 日から、新しい Personal Edition インスタンスのレジストリエンドポイントのフォーマットが変更されます。 詳細については、「新しい Personal Edition インスタンスの利用上の注意」をご参照ください。 ご利用のインスタンスのバージョンに基づいて、イメージをプッシュおよびプルする方法を選択してください。

新しいパーソナル版インスタンス

  1. Docker で次のコマンドを実行して Alibaba Cloud Docker Registry にログオンします。 コマンドで、acr_e2******@test.aliyunid.com を Alibaba Cloud アカウント名に、cn-hangzhou をインスタンスリージョンに、crpi-xxxx をインスタンス ID に置き換えます。 パスワードの入力を求められます。 インスタンス ID を確認するには、Alibaba Cloud Container Registry コンソールにログオンし、Personal Edition に移動して、概要 ページの インスタンス タブで インスタンス ID を確認します。

    docker login --username=acr_e2******@test.aliyunid.com crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com
  2. 次のコマンドを実行して、イメージをプルします。

    docker pull crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0
  3. 次のコマンドを実行して、Docker イメージを表示します。

    docker images
  4. 次のコマンドを実行して、イメージを実行します。

    docker run -ti crpi-xxxx.cn-hangzhou.personal.cr.aliyuncs.com/test23432/test:V1.0.0
    Hello World!

古いパーソナル版インスタンス

  1. Docker で次のコマンドを実行して、Alibaba Cloud Docker Registry にログインします。コマンド内の acr_e2******@test.aliyunid.com を Alibaba Cloud アカウント名に、cn-hangzhou をインスタンスのリージョンに置き換えてください。パスワードの入力を求められます。

    docker login --username=acr_e2******@test.aliyunid.com registry.cn-hangzhou.cr.aliyuncs.com
  2. 次のコマンドを実行してイメージをプルします。コマンド内の cn-hangzhou をインスタンスのリージョンに、test23432 を名前空間に、test:V1.0.0 をリポジトリ名とイメージタグに置き換えてください。

    docker pull registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0
  3. 次のコマンドを実行して、Docker イメージを表示します。

    docker images
  4. 次のコマンドを実行してイメージを実行します。cn-hangzhou をパーソナル版インスタンスのリージョンに置き換えてください。test23432 を実際の名前空間に置き換えてください。test:V1.0.0 を実際のリポジトリ名とイメージタグに置き換えてください。

    docker run -ti registry.cn-hangzhou.cr.aliyuncs.com/test23432/test:V1.0.0
    Hello World!