Cloud Native Buildpacks を使用して、アプリからイメージをビルドしてプッシュする
Azure CLI の az acr pack build
コマンドを実行すると、Buildpacks の pack
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 Service や Azure Kubernetes Service などでの実行が含まれます。
ACR タスクの機能の詳細については、「ACR タスクでコンテナー イメージのビルドとメンテナンスを自動化する」を参照してください。