Поделиться через


Контейнеризация приложения с помощью Paketo Buildpacks

Примечание.

Планы "Базовый", "Стандартный" и "Корпоративный" будут устарели начиная с середины марта 2025 г. с 3-летнего периода выхода на пенсию. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в объявлении о выходе на пенсию в Azure Spring Apps.

Стандартный план потребления и выделенного плана будет устарел с 30 сентября 2024 г. с полным завершением работы после шести месяцев. Рекомендуется перейти в приложения контейнеров Azure. Дополнительные сведения см. в статье "Миграция потребления Azure Spring Apps Standard" и выделенного плана в приложения контейнеров Azure.

Эта статья относится к:✅ Basic/Standard ✅ Enterprise

В этой статье описывается, как создать образ контейнера с помощью Paketo Buildpacks.

Служба Azure Spring Apps поддерживает создание образа из исходного кода без использования Dockerfiles. Это не ограничивается приложениями Java, но распространяется на другие языки программирования и даже статическое веб-содержимое. В плане "Стандартный" служба использует пакеты сборки Paketo с открытым исходным кодом, а в плане Enterprise используется VMware Tanzu Buildpacks. Если в Tanzu Buildpacks недоступны или нет веб-службы для использования Paketo, вы можете переключиться на локальные пакеты сборки Paketo для создания образов. Затем разверните их в Реестр контейнеров Azure или других реестрах Docker.

В этой статье показано, как создать построитель с файлом TOML, а затем создать исходный код или файл артефактов с помощью построителя. Дополнительные сведения см. в построителе.toml. Чтобы понять образ сборки, запустить образ и стек, см. статью "Что такое базовые образы".

Необходимые компоненты

План "Стандартный"

План Azure Spring Apps Standard поставляется со встроенным построителем, который нельзя настроить. Если вы используете стандартный план, необходимо создать ФАЙЛ TOML с именем standard-builder.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>

План "Корпоративный"

План Azure Spring Apps Enterprise использует VMware Tanzu Buildpacks для создания исходного кода для образов контейнеров. Tanzu Buildpacks построен на основе paketo Buildpacks с открытым исходным кодом. Таким образом, вероятно, невозможно найти пакет сборки Paketo точно эквивалентно Танзу.

В этом разделе показано, как создать построитель с paketo Buildpacks, близкой к ней, но не точно так же, как и в плане Enterprise. Вы несете ответственность за выполнение тестов или просмотр пакетов сборки для подтверждения совместимости сборки в плане Enterprise и собственного построителя на локальном компьютере.

План Enterprise поставляется со построитель по умолчанию, состоящий из следующих компонентов:

  • Стек ОС: io.buildpacks.stacks.jammy-base
  • Сборки:
    • tanzu-buildpacks/java-azure
    • tanzu-buildpacks/dotnet-core
    • tanzu-buildpacks/go
    • tanzu-buildpacks/web-servers
    • tanzu-buildpacks/nodejs
    • tanzu-buildpacks/python

С помощью интерфейса командной строки пакета можно создать аналогичный построитель стека ОС Paketo и Paketo Buildpacks на локальном компьютере. Затем вы можете использовать этот созданный построитель для создания исходного кода приложения.

Если вы используете построитель, отличный от стандартного, необходимо проверить его конфигурацию — стек ОС и пакеты сборок , а затем создать построитель Paketo, похожий на него. Чтобы проверить конфигурацию построителя, перейдите к портал Azure, найдите экземпляр Azure Spring Apps и просмотрите область "Служба сборки". Найдите построителя и нажмите кнопку "Изменить построитель". Кроме того, можно использовать команду az spring build-service builder showAzure CLI.

В следующей таблице показаны эквиваленты стека ОС Paketo, эквивалентные стекам ОС, используемым в плане enterprise:

Стек ОС в плане enterprise Стек ОС Paketo
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/bionic-base-stack
Строить: paketobuildpacks/build-bionic-base
Выполните paketobuildpacks/run-bionic-base.
io.buildpacks.stacks.bionic-full (End of support) paketobuildpacks/bionic-full-stack
Строить: paketobuildpacks/build-bionic-full
Выполните paketobuildpacks/run-bionic-full.

В следующей таблице показаны эквиваленты Paketo Buildpack для пакетов сборки, используемых в плане Enterprise:

Buildpack в плане Enterprise 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 в качестве примера. С помощью следующего ФАЙЛА TOML с именем enterprise-builder.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>

Вы также можете настроить enterprise-builder.toml , добавив или удалив пакеты сборки, а затем обновив существующий построитель или создав с ним новый построитель.

Пользовательская настройка

Пакеты сборок предоставляют способ настройки различных конфигураций. В следующих примерах показаны распространенные сценарии для создания образа контейнера с конкретными требованиями:

  • Сведения о настройке исходного кода JDK для Java см. в разделе paketo-buildpacks/microsoft-openjdk.
  • Сведения о настройке Tomcat для WAR см. в разделе paketo-buildpacks/apache-tomcat.
  • Сведения о добавлении сертификатов ЦС в хранилище доверия системы во время сборки и среды выполнения см. в разделе paketo-buildpacks/ca-certificates.

Дополнительные сведения о свойствах и конфигурациях см. в статье "Создание приложений Java с помощью Paketo Buildpacks и Справочник по Сборке Java".