使用Paketo Buildpacks將應用程式容器化
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文適用於:✅ 基本/標準 ✅ 企業
本文說明如何使用Paketo Buildpacks建置容器映像。
Azure Spring Apps 服務支援從原始程式碼建置映射,而不需要使用 Dockerfiles。 它不限於 Java 應用程式,而是延伸到其他程式設計語言,甚至是靜態 Web 內容。 在標準方案中,服務會使用開放原始碼 的Paketo Buildpacks,而在企業方案中,它會使用VMware TanzuBuildpacks。 如果 Tanzu Buildpacks 無法使用,或沒有使用 Paketo 的在線服務,您可以切換至本機 Paketo Buildpacks 來建置映像。 然後將它們部署到 Azure Container Registry 或其他 Docker 登錄。
本文說明如何使用 TOML 檔案建立產生器,然後使用產生器建置原始程式碼或成品檔案。 如需詳細資訊,請參閱 builder.toml。 若要了解組建映像、執行映像和堆疊,請參閱 什麼是基底映像。
必要條件
標準方案
Azure Spring Apps Standard 方案隨附內建建置器,您無法自定義。 如果您使用標準方案,您必須使用下列內容建立名為 standard-builder.toml 的 TOML 檔案。 使用此檔案,您可以建立相當於 Azure Spring Apps Standard 方案中可用建置器。
# filename: standard-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:12.0.0"
id = "paketo-buildpacks/java-azure"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-native-image:9.8.0"
id = "paketo-buildpacks/java-native-image"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:0.48.3"
id = "paketo-buildpacks/dotnet-core"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-native-image"
[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"
[build]
image = "paketobuildpacks/build-jammy-base:0.1.129"
[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:0.1.129"
若要使用此 TOML 檔案建立產生器,請使用下列命令:
pack builder create <builder-name> --config ./standard-builder.toml
您可以使用下列命令來檢查產生器:
pack builder inspect <builder-name>
若要使用這個產生器將 Java 原始程式碼或 .NET 原始碼建置至容器映像,請使用下列命令:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
若要使用建置器將成品,例如 JAR 或 WAR 檔案建置至容器映像,請使用下列命令:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
Enterprise 方案
Azure Spring Apps 企業版方案會使用 VMware Tanzu Buildpacks,將原始程式碼建置至容器映像。 Tanzu Buildpacks 是以開放原始碼的Paketo Buildpack為基礎所建置。 因此,可能找不到完全相當於坦祖組建套件的派克托組建套件。
在本節中,您可以看到如何使用接近 Enterprise 方案中的 Paketo Buildpacks 來建立建置者,但與 Enterprise 方案中的建置套件不同。 您必須負責執行測試或查看 buildpack,以確認 Enterprise 方案中組建的相容性,以及本機電腦上的您自己的建置器。
企業方案隨附預設產生器,其中包含下列元件:
- OS Stack:io.buildpacks.stacks.jammy-base
- Buildpacks:
- tanzu-buildpacks/java-azure
- tanzu-buildpacks/dotnet-core
- tanzu-buildpacks/go
- tanzu-buildpacks/web-servers
- tanzu-buildpacks/nodejs
- tanzu-buildpacks/python
使用套件 CLI,您可以在本機計算機上建立具有 Paketo OS 堆疊和 Paketo Buildpacks 的類似建置器。 然後,您可以使用這個新建立的建置器來建置應用程式原始程式碼。
如果您使用預設的建置器以外的建置器,您需要檢查其組態 - OS 堆疊和 buildpacks ,然後建立類似它的 Paketo 建立器。 若要檢查建置者的設定,請移至 Azure 入口網站,尋找您的 Azure Spring Apps 實例,然後檢視 [建置服務] 窗格。 尋找建立器,然後選取 [ 編輯產生器]。 或者,您可以使用 Azure CLI 命令 az spring build-service builder show
。
下表顯示與 Enterprise 方案中使用的 OS 堆疊相等的 Paketo OS 堆疊:
企業方案中的OS堆疊 | Paketo OS 堆疊 |
---|---|
io.buildpacks.stacks.jammy-base |
paketobuildpacks/jammy-base-stack 建: paketobuildpacks/build-jammy-base 執行: paketobuildpacks/run-jammy-base |
io.buildpacks.stacks.jammy-full |
paketobuildpacks/jammy-full-stack 建: paketobuildpacks/build-jammy-full 執行: paketobuildpacks/run-jammy-full |
io.buildpacks.stacks.jammy-tiny |
paketobuildpacks/jammy-tiny-stack 建: paketobuildpacks/build-jammy-tiny 執行: paketobuildpacks/run-jammy-tiny |
io.buildpacks.stacks.bionic-base (End of support) |
paketobuildpacks/b生-base-stack 建: paketobuildpacks/build-bionic-base 執行: paketobuildpacks/run-bionic-base |
io.buildpacks.stacks.bionic-full (End of support) |
paketobuildpacks/b生-full-stack 建: paketobuildpacks/build-bionic-full 執行: paketobuildpacks/run-bionic-full |
下表顯示與 Enterprise 方案中使用的 Buildpack 相等的 Paketo Buildpack:
Enterprise 方案中的 Buildpack | Paketo Buildpack |
---|---|
tanzu-buildpacks/dotnet-core |
paketo-buildpacks/dotnet-core |
tanzu-buildpacks/go |
paketo-buildpacks/go |
tanzu-buildpacks/java-azure |
paketo-buildpacks/java-azure |
tanzu-buildpacks/java-native-image |
paketo-buildpacks/java-native-image |
tanzu-buildpacks/nodejs |
paketo-buildpacks/nodejs |
tanzu-buildpacks/php |
paketo-buildpacks/php |
tanzu-buildpacks/python |
paketo-buildpacks/python |
tanzu-buildpacks/web-servers |
paketo-buildpacks/web-servers |
以企業方案中的預設產生器為例。 使用下列名為 enterprise-builder.toml 的 TOML 檔案,您可以在本機計算機上建立類似的建立器:
# filename: enterprise-builder.toml
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/java-azure:latest"
id = "paketo-buildpacks/java-azure"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/dotnet-core:latest"
id = "paketo-buildpacks/dotnet-core"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/go:latest"
id = "paketo-buildpacks/go"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/web-servers:latest"
id = "paketo-buildpacks/web-servers"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/nodejs:latest"
id = "paketo-buildpacks/nodejs"
[[buildpacks]]
uri = "docker://docker.io/paketobuildpacks/python:latest"
id = "paketo-buildpacks/python"
[[order]]
[[order.group]]
id = "paketo-buildpacks/java-azure"
[[order]]
[[order.group]]
id = "paketo-buildpacks/dotnet-core"
[[order]]
[[order.group]]
id = "paketo-buildpacks/go"
[[order]]
[[order.group]]
id = "paketo-buildpacks/web-servers"
[[order]]
[[order.group]]
id = "paketo-buildpacks/nodejs"
[[order]]
[[order.group]]
id = "paketo-buildpacks/python"
[build]
image = "paketobuildpacks/build-jammy-base:latest"
[run]
[[run.images]]
image = "paketobuildpacks/run-jammy-base:latest"
若要使用此 TOML 檔案建立組建,請使用下列命令:
pack builder create <builder-name> --config ./enterprise-builder.toml
您可以使用下列命令來檢查產生器:
pack builder inspect <builder-name>
現在您有類似 Azure Spring Apps Enterprise 方案中預設建立器的建置者。 透過此產生器,您可以使用下列命令,將 JAR 檔案、WAR 檔案、Java 原始程式碼、.NET 原始碼、Golang 原始程式碼、NodeJS 原始碼或 Python 原始碼建置至容器映射:
pack build <image-name> \
--path <path-to-source-root> \
--builder <builder-name>
若要使用建置器將成品,例如 JAR 或 WAR 檔案建置至容器映像,請使用下列命令:
pack build <image-name> \
--path <path-to-artifact> \
--builder <builder-name>
您也可以新增或移除 buildpacks 來自定義 enterprise-builder.toml ,然後更新現有的建置器,或使用它建立新的產生器。
自訂
Buildpacks 提供自定義各種組態的方式。 下列範例示範使用特定需求建置容器映像的常見案例:
- 若要自定義 Java 原始程式碼的 JDK,請參閱 paketo-buildpacks/microsoft-openjdk。
- 若要自定義 WAR 的 Tomcat,請參閱 paketo-buildpacks/apache-tomcat。
- 若要在組建和運行時間將 CA 憑證新增至系統信任存放區,請參閱 paketo-buildpacks/ca-certificates。
如需屬性和組態的詳細資訊,請參閱 如何使用Paketo Buildpacks 和 Java Buildpack 參考建置 Java Apps。