使用 Cloud Native Buildpack 从应用生成映像并推送该映像

Azure CLI 命令 az acr pack build 使用 pack CLI 工具(来自 Buildpacks)生成应用,并将此应用的映像推送到 Azure 容器注册表中。 此功能提供一个选项,用于从以 Node.js、Java 和其他语言编写的应用程序源代码快速生成容器映像,而无需定义 Dockerfile。

可以使用本地安装的 Azure CLI 来运行本文中的示例。 若要在本地使用 Azure CLI,需要安装 2.0.70 或更高版本。 运行 az --version 即可查找版本。 如果需要进行安装或升级,请参阅安装 Azure CLI

重要

此功能目前以预览版提供。 需同意补充使用条款才可使用预览版。 在正式版 (GA) 推出之前,此功能的某些方面可能会有所更改。

使用 build 命令

若要使用 Cloud Native Buildpack 生成并推送容器映像,请运行 az acr pack build 命令。 az acr build 命令从 Dockerfile 源和相关代码生成并推送映像,而使用 az acr pack build 可直接指定应用程序源树。

运行 az acr pack build 时,请至少指定以下各项:

  • 在其中运行命令的 Azure 容器注册表
  • 生成的映像的映像名称和标记
  • ACR 任务的受支持上下文位置之一,例如本地目录、GitHub 存储库或远程 tarball
  • 适合你的应用程序的 Buildpack 生成器映像的名称。 如果未由 Azure 容器注册表缓存,则必须使用 --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(如果已安装)运行该映像。 首先登录到注册表:

az acr login --name myregistry

运行映像:

docker run --rm -p 1337:1337 myregistry.azurecr.cn/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.cn/java-app:runid

在你常用的浏览器中浏览到 localhost:8080,以查看示例 Web 应用。 按 [Ctrl]+[C] 停止容器。

后续步骤

使用 az acr pack build 生成并推送容器映像后,可以像部署任何其他映像一样将其部署到所选目标。 Azure 部署选项包括在应用服务Azure Kubernetes 服务中运行等。

有关 ACR 任务功能的详细信息,请参阅使用 ACR 任务自动执行容器映像的生成和维护