Share via


Cloud Native Buildpacks を使用して、アプリからイメージをビルドしてプッシュする

Azure CLI の az acr pack build コマンドを実行すると、Buildpackspack CLI ツールを使用して、アプリがビルドされ、Azure コンテナー レジストリへそのイメージがプッシュされます。 この機能を使用すると、Dockerfile を定義しなくても、Node.js、Java、およびその他の言語のアプリケーション ソース コードからコンテナー イメージをすばやく作成するというオプションが得られます。

Azure Cloud Shell または Azure CLI のローカル インストールを使って、この記事の例を実行できます。 それをローカルで使う場合は、バージョン 2.0.70 以降が必要です。 バージョンを確認するには、az --version を実行します。 インストールまたはアップグレードする必要がある場合は、Azure CLI のインストールに関するページを参照してください。

重要

現在、この機能はプレビュー段階にあります。 プレビュー版は、追加使用条件に同意することを条件に使用できます。 この機能の一部の側面は、一般公開 (GA) 前に変更される可能性があります。

ビルド コマンドを使用する

Cloud Native Buildpacks を使用してコンテナー イメージをビルドおよびプッシュするには、az acr pack build コマンドを実行します。 az acr build コマンドでは Dockerfile ソースと関連コードからイメージをビルドしてプッシュするのに対して、az acr pack build ではアプリケーション ソース ツリーを直接指定します。

az acr pack build を実行するときは、少なくとも以下を指定します。

  • コマンドを実行する Azure コンテナー レジストリ
  • イメージ名と生成されるイメージのタグ
  • ローカル ディレクトリ、GitHub リポジトリ、リモートの tarball など、ACR タスクでサポートされるコンテキストの場所のいずれか。
  • 実際のアプリケーションに適した Buildpack ビルダー イメージの名前。 Azure Container Registry によってキャッシュされない場合、ビルダー イメージは --pull パラメーターでプルする必要があります。

az acr pack build では、Run 変数や、ストリーミングされ、後で取得できるように保存されるタスク実行ログなど、ACR タスク コマンドの他の機能もサポートしています。

例: Cloud Foundry ビルダーを使用して Node.js イメージをビルドする

次の例では、cloudfoundry/cnb:cflinuxfs3 ビルダーを使用して、Azure Samples/nodejs-docs-hello world リポジトリの Node.js アプリからコンテナー イメージをビルドします。

az acr pack build \
    --registry myregistry \
    --image node-app:1.0 \
    --pull --builder cloudfoundry/cnb:cflinuxfs3 \
    https://github.com/Azure-Samples/nodejs-docs-hello-world.git

この例では、1.0 タグを使用して node-app イメージをビルドし、これを myregistry コンテナー レジストリにプッシュします。 この例では、ターゲット レジストリ名はイメージ名の前に明示的に指定します。 指定しない場合、レジストリのログイン サーバー名が自動的にイメージ名の前に付加されます。

コマンドの出力には、イメージのビルドおよびプッシュの進行状況が表示されます。

イメージが正常にビルドされたら、Docker を使用してこれを実行できます (インストールされている場合)。 まず、次のようにレジストリにサインインします。

az acr login --name myregistry

次のように、イメージを実行します。

docker run --rm -p 1337:1337 myregistry.azurecr.io/node-app:1.0

任意のブラウザーで localhost:1337 を参照し、サンプル Web アプリを確認します。 [Ctrl]+[C] キーを押して、コンテナーを停止します。

例: Heroku ビルダーを使用して Java イメージをビルドする

次の例では、heroku/buildpacks:18 ビルダーを使用して、buildpack/sample-java-app リポジトリの Java アプリからコンテナー イメージをビルドします。

az acr pack build \
    --registry myregistry \
    --image java-app:{{.Run.ID}} \
    --pull --builder heroku/buildpacks:18 \
    https://github.com/buildpack/sample-java-app.git

この例では、コマンドの実行 ID でタグ付けされた java-app イメージをビルドし、これを myregistry コンテナー レジストリにプッシュします。

コマンドの出力には、イメージのビルドおよびプッシュの進行状況が表示されます。

イメージが正常にビルドされたら、Docker を使用してこれを実行できます (インストールされている場合)。 まず、次のようにレジストリにサインインします。

az acr login --name myregistry

runid をイメージ タグで置き換えて、イメージを実行します。

docker run --rm -p 8080:8080 myregistry.azurecr.io/java-app:runid

任意のブラウザーで localhost:8080 を参照し、サンプル Web アプリを確認します。 [Ctrl]+[C] キーを押して、コンテナーを停止します。

次のステップ

az acr pack build を使用してコンテナー イメージをビルドし、プッシュした後は、任意のイメージを任意のターゲットにデプロイできます。 Azure のデプロイ オプションには、App ServiceAzure Kubernetes Service などでの実行が含まれます。

ACR タスクの機能の詳細については、「ACR タスクでコンテナー イメージのビルドとメンテナンスを自動化する」を参照してください。