Контейнеризация приложения с помощью 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 show
Azure 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".