Todos os produtos
Search
Central de documentação

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

Última atualização: Jun 28, 2026

Por padrão, o recurso de gerenciamento de aplicativos usa Heroku Cloud Native Buildpacks (CNBs) na versão heroku/builder:24 para compilar aplicativos. Este tópico descreve como configurar aplicativos em Java, Python, Go, Node.js , incluindo arquivos obrigatórios, fixação de versão de runtime e uso do Procfile.

Observações sobre a configuração de imagens de contêiner e contêineres

  • Configure variáveis de ambiente ao compilar uma imagem de contêiner

    Adicione um arquivo project.toml para especificar variáveis de ambiente de compilação, como MAVEN_OPTS.

    Nota

    Para obter mais informações sobre o project.toml, consulte a seção Introdução ao project.toml deste tópico.

  • Configure variáveis de ambiente para passar parâmetros de runtime do contêiner

    Os parâmetros de runtime do contêiner são passados aos aplicativos por meio de variáveis de ambiente. Certifique-se de que seu código leia os parâmetros dessas variáveis. Ao implantar um contêiner, especifique as variáveis de ambiente correspondentes. O gerenciamento de aplicativos armazena essas variáveis no arquivo env e as transmite ao processo do contêiner usando a opção --env-file.

Configurações do aplicativo

O recurso de gerenciamento de aplicativos implanta diretamente repositórios de código nas linguagens de programação a seguir. Cada seção abaixo descreve os arquivos necessários e as opções de configuração para a respectiva linguagem.

Java

Requisitos para aplicativos

Aplicativos Java devem atender aos seguintes requisitos:

  • O diretório raiz do repositório de código deve conter um arquivo pom.xml.

  • Compile o aplicativo com Maven ou Gradle.

  • A versão do JDK do aplicativo deve ter suporte.

Observações de configuração

  • Versões do OpenJDK

    Há suporte para as versões principais 8, 11, 17, 21 e 22 do OpenJDK. Os CNBs instalam a versão secundária mais recente da versão principal especificada.

    Nota

    Especifique a versão principal do OpenJDK para seu aplicativo. Caso contrário, os CNBs instalarão a versão atual de suporte de longo prazo (LTS) padrão, que muda com o tempo e pode causar falhas de compilação quando o padrão for atualizado.

    Para fixar uma versão, adicione o system.properties arquivo de propriedades Java ao diretório raiz do aplicativo. O exemplo a seguir fixa o aplicativo no OpenJDK 21:

    java.runtime.version=21
  • Opções do Maven

    Use a variável de ambiente MAVEN_OPTS para aplicar configurações do Maven. Adicione um arquivo project.toml ao diretório raiz para definir essa variável.

    Os CNBs oferecem suporte ao Maven 3.9 por padrão. Se o seu aplicativo exigir uma versão diferente do Maven, use o Maven Wrapper (mvnw). Os CNBs detectam e usam o arquivo mvnw na raiz do projeto.

    Execute o comando a seguir para configurar o Maven Wrapper:

    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

    Um Procfile declara o tipo de processo e o comando de inicialização de um aplicativo. Para obter mais informações sobre a sintaxe do Procfile e os tipos de processo, consulte a seção Introdução aos Procfiles deste tópico. Em aplicativos Spring Boot, um Procfile substitui o processo de inicialização padrão. O exemplo a seguir mostra um Procfile típico para Spring Boot:

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

Projetos de exemplo

Para obter mais informações, consulte buildpacks-jvm.

Python

Requisitos para aplicativos

O diretório raiz do repositório de código-fonte deve conter um arquivo requirements.txt ou poetry.lock.

Observações de configuração

  • Versões do Python

    Os CNBs instalam a versão mais recente do Python (atualmente 3,13) por padrão. Para usar uma versão diferente, adicione um arquivo .python-version ao diretório raiz e especifique a versão desejada:

    $ cat .python-version
    3.13
  • Procfile

    Um Procfile é um arquivo de texto simples no diretório raiz que declara o tipo de processo e o comando de inicialização. O exemplo a seguir mostra um Procfile para um aplicativo Python usando Gunicorn:

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

    Um Procfile não é obrigatório para aplicativos simples, mas recomenda-se adicioná-lo a aplicativos Python para tornar o comando de inicialização explícito e evitar dependência de detecção automática. Para obter mais informações, consulte a seção Introdução aos Procfiles.

Projetos de exemplo

Para obter mais informações, consulte buildpacks-python.

Go

Requisitos para aplicativos

Aplicativos Go devem atender aos seguintes requisitos:

  • O diretório raiz do repositório de código deve conter um arquivo go.mod. O module name no arquivo go.mod deve conter pelo menos uma barra (/).

  • É necessário Go 1.16 ou posterior para compilação. Use módulos Go para gerenciar dependências.

    Nota

    Os CNBs oferecem suporte apenas a módulos Go para gerenciamento de dependências. Não há suporte para gerenciadores de dependências de terceiros, como dep, godep, govendor e glide.

Observações de configuração

  • Versões do Go

    Os CNBs leem a versão do Go a partir da diretiva go no go.mod. Um identificador de versão principal, como go 1.17, resolve para a versão de patch mais recente dessa série disponível no momento da compilação. Para fixar uma versão de patch específica, especifique a versão completa (por exemplo, go 1.17.13).

    A entrada a seguir seleciona a versão Go 1.17.x mais recente disponível no momento da compilação:

    go 1.17
  • Gerenciamento de dependências

    • Se o diretório raiz contiver um arquivo vendor/modules.txt, os CNBs usarão os módulos Go no diretório vendor em vez de baixá-los.

    • Caso não haja um arquivo vendor/modules.txt, os CNBs baixarão os módulos Go antes da compilação.

  • Instalação de pacotes

    Os CNBs compilam todos os pacotes main detectados no projeto.

Projetos de exemplo

Para obter mais informações, consulte buildpacks-go.

Node.js

Requisitos para aplicativos

Aplicativos Node.js devem atender aos seguintes requisitos:

  • Um arquivo package.json válido deve estar presente no diretório raiz para que os CNBs detectem o aplicativo.

  • Um arquivo de lock válido do npm, yarn ou pnpm deve estar presente para instalar dependências.

Observações de configuração

Versões do Node.js

Defina o campo engines.node no package.json para fixar a versão do Node.js. Se nenhuma versão for especificada, os CNBs instalarão a versão LTS mais recente, que muda com o tempo e pode causar comportamentos inesperados na compilação.

O exemplo a seguir fixa o aplicativo na versão Node.js 20.x mais recente:

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

O campo engines.node aceita a mesma sintaxe de versão semântica do package.json. Fixe a versão do Node.js para evitar alterações inesperadas quando a versão LTS padrão for atualizada.

Projetos de exemplo

Para obter mais informações, consulte buildpacks-nodejs.

PHP

Requisitos para aplicativos

Aplicativos PHP devem atender aos seguintes requisitos:

  • Há suporte para as versões 8,2, 8,3 e 8,4 do PHP.

  • O diretório raiz do repositório do aplicativo deve conter os arquivos composer.json e composer.lock.

Observações de configuração

PHP

Especifique a versão de runtime do PHP no composer.json. O exemplo a seguir exige PHP 8.2.0 ou posterior:

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

Projetos de exemplo

Para obter mais informações, consulte buildpacks-php e php-support.

Ruby

Requisitos para aplicativos

O diretório raiz do repositório de código deve conter arquivos Gemfile e Gemfile.lock válidos.

Observações de configuração

  • Versões do Ruby

    Especifique a versão do Ruby no Gemfile e atualize o Gemfile.lock adequadamente:

    1. Especifique a versão do Ruby no Gemfile:

      ruby "3.3.0"
    2. Atualize o Gemfile.lock:

      $ bundle update --ruby
    3. Verifique a versão do Ruby no Gemfile.lock:

      RUBY VERSION
         ruby 3.3.0p0

      Se nenhuma versão do Ruby for encontrada no Gemfile.lock, os Buildpacks instalarão a versão padrão do Ruby. Especifique uma versão para evitar alterações inesperadas quando o padrão for atualizado.

  • Versões do Bundler

    Especifique a versão do Bundler no Gemfile.lock para fixar o bundler em uma versão conhecida e estável. Exemplo:

    BUNDLED WITH
       2.5.6

    Se nenhuma versão do Bundler for encontrada no Gemfile.lock, os Buildpacks instalarão a versão padrão do Bundler. Especifique uma versão para evitar alterações inesperadas quando o padrão for atualizado.

Projetos de exemplo

  • GitHub:

  • Gitee:

Para obter mais informações, consulte buildpacks-ruby e application-contract.md.

Introdução ao project.toml e Procfile

  • Clique em para visualizar a introdução e as configurações do project.toml

    • Introdução ao project.toml

      O project.toml, também conhecido como descritor de projeto, é um arquivo de texto simples armazenado no diretório raiz do projeto. Use-o para configurar detalhadamente um repositório de código — por exemplo, para especificar quais buildpacks usar, quais arquivos incluir ou excluir e como definir variáveis de ambiente durante a compilação. Para obter mais informações, consulte project.toml.

    • Configurações do project.toml

      O arquivo project.toml aceita as seguintes configurações principais. Para referência completa, consulte Use project.toml.

      • Configure variáveis de ambiente ao compilar uma imagem

        Crie ou atualize o project.toml no diretório raiz do projeto. O exemplo a seguir define MAVEN_OPTS e uma segunda variável de ambiente:

        [_]
        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"
      • Opcional. Especifique o builder do project.toml

        O gerenciamento de aplicativos usa um builder padrão. Para substituí-lo, especifique um builder no project.toml:

        [io.buildpacks]
        builder = "cnbs/sample-builder:noble"
  • Clique em para visualizar a introdução e o formato do Procfile

    • Introdução ao Procfile

      Um Procfile é um arquivo de texto simples sem extensão, colocado no diretório raiz de um aplicativo. Ele substitui o processo de inicialização padrão para aplicativos em qualquer linguagem de programação. Para obter mais informações, consulte Procfile.

    • Formato do Procfile

      Cada linha em um Procfile declara um tipo de processo usando o seguinte formato:

      PROCESS_TYPE: COMMAND

      Substitua os espaços reservados conforme descrito abaixo:

      • Substitua PROCESS_TYPE pelo tipo de processo, como web, worker ou custom.

      • Substitua COMMAND pelo comando usado para iniciar esse tipo de processo, como gunicorn -b :$PORT main:app.