Share via


使用 Cloud Native Buildpack 從應用程式組建和推送映像

Azure CLI 命令 az acr pack build 使用 Buildpacks 中的 pack CLI 工具來組建應用程式,並將其映像推送至 Azure 容器登錄。 此功能可讓您選擇以 Node.js、JAVA 和其他語言,從應用程式原始程式碼快速組建容器映像,而不需要定義 Dockerfile。

您可以使用 Azure Cloud Shell 或安裝在本機的 Azure CLI 來執行本文中的範例。 如果想要在本機使用,則需要 2.0.70 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI

重要

此功能目前為預覽功能。 若您同意補充的使用規定即可取得預覽。 在公開上市 (GA) 之前,此功能的某些領域可能會變更。

使用 build 命令

若要使用 Cloud Native Buildpacks 來組建和推送容器映像,請執行 az acr pack build 命令。 az acr build 命令從 Dockerfile 原始碼和相關程式碼組建和推送映像,但 az acr pack build 可讓您直接指定應用程式原始碼樹狀。

當您執行 az acr pack build 時,請至少指定下列內容:

  • 供您執行命令的 Azure 容器登錄
  • 所產生映像的映像名稱和標記
  • ACR 工作的其中一個支援的內容位置,例如本機目錄、GitHub 存放庫或遠端 tarball
  • 適合應用程式的 Buildpack 建立器映像名稱。 如果未由 Azure Container Registry 快取建立器映像,則必須使用 --pull 參數來提取建立器映像。

az acr pack build 支援 ACR 工作命令的其他功能,包括 Run 變數工作執行記錄,這些會進行資料串流處理,並儲存以供日後擷取。

範例:使用 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,則可以使用 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

此範例組建 java-app 映像並以命令的執行識別碼加上標記,然後推送至 myregistry 容器登錄。

命令輸出顯示組建和推送映像的進度。

成功組建映像之後,如果您已安裝 Docker,則可以使用 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 工作來自動化容器映像組建和維護