Tüm Ürünler
Search
Belge Merkezi

CloudOps Orchestration Service:Configure an application in a specific programming language

Son Güncelleme:Oct 07, 2026

Uygulama yönetimi özelliği, varsayılan olarak uygulamaları derlemek için heroku/builder:24 sürümündeki Heroku Cloud Native Buildpacks (CNB) kullanır. Bu konu; Java, Python, Go, Node.js dillerindeki uygulamaların nasıl yapılandırılacağını açıklar. Açıklamalar arasında gerekli dosyalar, çalışma zamanı sürümü sabitleme ve Procfile kullanımı yer alır.

Konteyner görüntüleri ve konteynerler yapılandırırken dikkat edilmesi gerekenler

  • Konteyner görüntüsü oluştururken ortam değişkenlerini yapılandırın

    MAVEN_OPTS gibi derleme zamanı ortam değişkenlerini belirtmek için project.toml dosyası ekleyin.

    Not

    project.toml hakkında daha fazla bilgi için bu konunun project.toml'a giriş bölümüne bakın.

  • Konteyner çalışma zamanı parametrelerini iletmek için ortam değişkenlerini yapılandırın

    Konteyner çalışma zamanı parametreleri uygulamalara ortam değişkenleri aracılığıyla iletilir. Kodunuzun parametreleri ortam değişkenlerinden okuduğundan emin olun. Bir konteyner dağıttığınızda konteyner için ortam değişkenlerini belirtin. Uygulama yönetimi bu değişkenleri env dosyasında saklar ve --env-file seçeneğini kullanarak bunları konteyner işlemine iletir.

Uygulama yapılandırmaları

Uygulama yönetimi özelliği aşağıdaki programlama dillerindeki kod depolarını doğrudan dağıtabilir. Aşağıdaki her bölüm ilgili dil için gerekli dosyaları ve yapılandırma seçeneklerini açıklar.

Java

Uygulamalar için gereksinimler

Java uygulamalarının aşağıdaki gereksinimleri karşılaması gerekir:

  • Kod deposunun kök dizini bir pom.xml dosyası içermelidir.

  • Uygulamayı Maven veya Gradle ile derleyin.

  • Uygulamanın JDK sürümü desteklenmelidir.

Yapılandırma notları

  • OpenJDK sürümleri

    OpenJDK'nin 8, 11, 17, 21 ve 22 ana sürümleri desteklenir. CNB belirtilen ana sürümün en son alt sürümünü yükler.

    Not

    Uygulamanız için OpenJDK ana sürümünü belirtin. Bunu atlarsanız CNB o anda varsayılan olan uzun vadeli destek (LTS) sürümünü yükler. Bu varsayılan değer zamanla değişebilir ve güncellendiğinde derleme hatalarına neden olabilir.

    Bir sürümü sabitlemek için uygulamanın kök dizinine system.properties Java özellik dosyasını ekleyin. Aşağıdaki örnek uygulamayı OpenJDK 21'e sabitler:

    java.runtime.version=21
  • Maven seçenekleri

    Maven ayarlarını uygulamak için MAVEN_OPTS ortam değişkenini kullanın. Bu değişkeni ayarlamak için kök dizine bir project.toml dosyası ekleyin.

    CNB varsayılan olarak Maven 3.9'u destekler. Uygulamanız farklı bir Maven sürümü gerektiriyorsa bunun yerine Maven Wrapper (mvnw) kullanın. CNB proje kökündeki mvnw dosyasını algılar ve kullanır.

    Maven Wrapper'ı kurmak için aşağıdaki komutu çalıştırın:

    mvn wrapper:wrapper # Generate the .mvn directory, the mvnw, and the mvnw.cmd file.
    git add .mvn mvnw mvnw.cmd
    git commit -m "support maven wrapper"
    git push origin # Submit the branch to the code repository.
  • Procfile

    Bir Procfile uygulamanın işlem türünü ve başlatma komutunu bildirir. Procfile sözdizimi ve işlem türleri hakkında daha fazla bilgi için bu konunun Procfile'lara giriş bölümüne bakın. Spring Boot uygulamalarında Procfile varsayılan başlatma işleminin üzerine yazar. Aşağıdaki örnek Spring Boot için tipik bir Procfile gösterir:

    web: java -Dserver.port=$PORT $JAVA_OPTS -jar target/demo-0.0.1-SNAPSHOT.jar

Örnek projeler

Daha fazla bilgi için buildpacks-jvm adresine bakın.

Python

Uygulamalar için gereksinimler

Kaynak kodu deposunun kök dizini bir requirements.txt veya poetry.lock dosyası içermelidir.

Yapılandırma notları

  • Python sürümleri

    CNB varsayılan olarak en son Python sürümünü (şu anda 3.13) yükler. Farklı bir sürüm kullanmak için kök dizine bir .python-version dosyası ekleyin ve hedef sürümü belirtin:

    $ cat .python-version
    3.13
  • Procfile

    Procfile kök dizinde bulunan işlem türünü ve başlatma komutunu bildiren düz metin bir dosyadır. Aşağıdaki örnek Gunicorn kullanan bir Python uygulaması için Procfile gösterir:

    web: gunicorn --config gunicorn.conf.py gettingstarted.wsgi
    Not

    Basit uygulamalar için Procfile gerekmez ancak başlatma komutunu açık hale getirmek ve otomatik algılamaya güvenmemek için Python uygulamalarına bir tane ekleyin. Daha fazla bilgi için Procfile'lara giriş bölümüne bakın.

Örnek projeler

Daha fazla bilgi için buildpacks-python adresine bakın.

Go

Uygulamalar için gereksinimler

Go uygulamalarının aşağıdaki gereksinimleri karşılaması gerekir:

  • Kod deposunun kök dizini bir go.mod dosyası içermelidir. go.mod dosyasındaki module name en az bir eğik çizgi (/) içermelidir.

  • Derleme için Go 1.16 veya sonraki bir sürüm gerekir. Bağımlılık yönetimi için Go modülleri kullanılmalıdır.

    Not

    CNB bağımlılık yönetimi için yalnızca Go modüllerini destekler. dep, godep, govendor ve glide gibi üçüncü taraf bağımlılık yöneticileri desteklenmez.

Yapılandırma notları

  • Go sürümleri

    CNB Go sürümünü go.mod içindeki go yönergesinden okur. go 1.17 gibi bir ana sürüm tanımlayıcısı derleme sırasında mevcut olan o serinin en son yama sürümüne çözülür. Belirli bir yama sürümüne sabitlemek için tam sürümü belirtin (örneğin go 1.17.13).

    Aşağıdaki girdi derleme sırasında mevcut olan en son Go 1.17.x sürümünü seçer:

    go 1.17
  • Bağımlılık yönetimi

    • Kök dizin bir vendor/modules.txt dosyası içeriyorsa CNB bunları indirmek yerine vendor dizinindeki Go modüllerini kullanır.

    • Bir vendor/modules.txt dosyası yoksa CNB derlemeden önce Go modüllerini indirir.

  • Paket yükleme

    CNB projede algılanan tüm main paketlerini derler.

Örnek projeler

Daha fazla bilgi için buildpacks-go adresine bakın.

Node.js

Uygulamalar için gereksinimler

Node.js uygulamalarının aşağıdaki gereksinimleri karşılaması gerekir:

  • CNB'nin uygulamayı algılayabilmesi için kök dizinde geçerli bir package.json dosyası bulunmalıdır.

  • Bağımlılıkları yüklemek için geçerli bir npm, yarn veya pnpm kilitleme dosyası bulunmalıdır.

Yapılandırma notları

Node.js sürümleri

Node.js sürümünü sabitlemek için package.json içindeki engines.node alanını ayarlayın. Sürüm belirtilmezse CNB en son LTS sürümünü yükler. Bu sürüm zamanla değişebilir ve beklenmedik derleme davranışlarına neden olabilir.

Aşağıdaki örnek uygulamayı en son Node.js 20.x sürümüne sabitler:

{
  "engines": {
    "node": "20.x"
  }
}
Not

engines.node alanı package.json ile aynı anlamsal sürüm sözdizimini destekler. Varsayılan LTS sürümü güncellendiğinde beklenmedik değişiklikleri önlemek için Node.js sürümünü sabitleyin.

Örnek projeler

Daha fazla bilgi için buildpacks-nodejs adresine bakın.

PHP

Uygulamalar için gereksinimler

PHP uygulamalarının aşağıdaki gereksinimleri karşılaması gerekir:

  • PHP 8.2, 8.3 ve 8.4 desteklenir.

  • Uygulama deposunun kök dizini hem composer.json hem de composer.lock dosyalarını içermelidir.

Yapılandırma notları

PHP

PHP çalışma zamanı sürümünü composer.json içinde belirtin. Aşağıdaki örnek PHP 8.2.0 veya sonraki bir sürümü gerektirir:

{
  "require": {
    "php": "^8.2.0"
  }
}

Örnek projeler

Daha fazla bilgi için buildpacks-php ve php-support adreslerine bakın.

Ruby

Uygulamalar için gereksinimler

Kod deposunun kök dizini geçerli Gemfile ve Gemfile.lock dosyalarını içermelidir.

Yapılandırma notları

  • Ruby sürümleri

    Ruby sürümünü Gemfile içinde belirtin ve Gemfile.lock dosyasını buna göre güncelleyin:

    1. Ruby sürümünü Gemfile içinde belirtin:

      ruby "3.3.0"
    2. Gemfile.lock dosyasını güncelleyin:

      $ bundle update --ruby
    3. Gemfile.lock içindeki Ruby sürümünü doğrulayın:

      RUBY VERSION
         ruby 3.3.0p0

      Gemfile.lock içinde Ruby sürümü bulunamazsa Buildpacks varsayılan Ruby sürümünü yükler. Varsayılan sürüm güncellendiğinde beklenmedik değişiklikleri önlemek için bir sürüm belirtin.

  • Bundler sürümleri

    Bundler'ı bilinen kararlı bir sürüme sabitlemek için Gemfile.lock içinde Bundler sürümünü belirtin. Örnek:

    BUNDLED WITH
       2.5.6

    Gemfile.lock içinde Bundler sürümü bulunamazsa Buildpacks varsayılan Bundler sürümünü yükler. Varsayılan sürüm güncellendiğinde beklenmedik değişiklikleri önlemek için bir sürüm belirtin.

Örnek projeler

  • GitHub:

  • Gitee:

Daha fazla bilgi için buildpacks-ruby ve application-contract.md adreslerine bakın.

project.toml ve Procfile'a giriş

  • project.toml tanıtımını ve yapılandırmalarını görüntülemek için tıklayın

    • project.toml'a giriş

      project.toml (proje tanımlayıcı olarak da bilinir) proje kök dizininde depolanan düz metin bir dosyadır. Bu dosyayı kod deposunu ayrıntılı olarak yapılandırmak için kullanın; örneğin hangi buildpack'lerin kullanılacağını, hangi dosyaların dahil edileceğini veya hariç tutulacağını ve derleme sırasında ortam değişkenlerinin nasıl ayarlanacağını belirtin. Daha fazla bilgi için project.toml adresine bakın.

    • project.toml yapılandırmaları

      project.toml dosyası aşağıdaki ana yapılandırmaları destekler. Tam referans için project.toml kullanma adresine bakın.

      • Görüntü oluştururken ortam değişkenlerini yapılandırın

        Proje kök dizinindeki project.toml dosyasını oluşturun veya güncelleyin. Aşağıdaki örnek MAVEN_OPTS ve ikinci bir ortam değişkenini ayarlar:

        [_]
        schema-version = "0.2" # Required. Schema version 0.1 does not support build env.
        
        [[io.buildpacks.build.env]]
            name = "MAVEN_OPTS"
            value = "-Xms128m -Xmx512m"
        [[io.buildpacks.build.env]]
            name = "The name of Environment Variable 2"
            value = "The value of Environment Variable 2"
      • İsteğe bağlı. project.toml derleyicisini belirtin

        Uygulama yönetimi varsayılan bir derleyici kullanır. Bunun üzerine yazmak için project.toml içinde bir derleyici belirtin:

        [io.buildpacks]
        builder = "cnbs/sample-builder:noble"
  • Procfile tanıtımını ve biçimini görüntülemek için tıklayın

    • Procfile'a giriş

      Procfile bir uygulamanın kök dizininde yer alan dosya uzantısı olmayan düz metin bir dosyadır. Herhangi bir programlama dilindeki uygulamalar için varsayılan başlatma işleminin üzerine yazar. Daha fazla bilgi için Procfile adresine bakın.

    • Procfile biçimi

      Procfile'daki her satır aşağıdaki biçimi kullanarak bir işlem türü bildirir:

      PROCESS_TYPE: COMMAND

      Yer tutucuları aşağıdaki gibi değiştirin:

      • PROCESS_TYPE yerine web, worker veya custom gibi işlem türünü yazın.

      • COMMAND yerine bu işlem türünü başlatmak için kullanılan komutu yazın; örneğin gunicorn -b :$PORT main:app.