すべてのプロダクト
Search
ドキュメントセンター

CloudOps Orchestration Service:特定のプログラミング言語でアプリケーションを構成する

最終更新日:Mar 29, 2025

デフォルトでは、アプリケーション管理機能は、バージョンが heroku/builder:24 の Heroku Cloud Native Buildpacks(CNBs)を使用してアプリケーションをビルドします。このトピックでは、Heroku CNBs を使用して、Java、Python、Go、Node.js などのさまざまなプログラミング言語でアプリケーションを構成する方法について説明します。

コンテナイメージとコンテナの構成に関する注意事項

  • コンテナイメージのビルド時に環境変数を構成する

    コンテナイメージのビルド時に環境変数を指定するには、project.toml ファイルを追加します。たとえば、MAVEN_OPTS を指定します。

    説明

    project.toml の詳細については、このトピックの「project.toml の概要」セクションをご参照ください。

  • コンテナランタイムパラメータを渡すための環境変数を構成する

    コンテナランタイムパラメータは、環境変数でアプリケーションに渡されます。コードが環境変数からパラメータを読み取ることができることを確認してください。コンテナをデプロイするときに、コンテナの環境変数を指定できます。アプリケーション管理は、環境変数を env ファイルに保存し、--env-file オプションでコンテナプロセスに変数を渡します。

アプリケーション構成

コードリポジトリでは、次のプログラミング言語でのみアプリケーションを直接デプロイできます。このセクションでは、さまざまなプログラミング言語でアプリケーションを構成する方法について説明します。

Java

アプリケーションの要件

Java アプリケーションには、次の要件が適用されます。

  • コードリポジトリのルートディレクトリには、pom.xml ファイルが含まれている必要があります。

  • Maven または Gradle を使用してアプリケーションコードをビルドできます。

  • アプリケーションの JDK バージョンがサポートされている必要があります。

構成に関する注意事項

  • OpenJDK のバージョン

    OpenJDK メジャーバージョン 8、11、17、21、および 22 がサポートされています。CNBs は、指定された OpenJDK メジャーバージョンの最新のマイナーバージョンをインストールします。

    説明

    OpenJDK のバージョンを指定しない場合、CNBs はデフォルトで最新の長期サポート(LTS)バージョン(OpenJDK 8、11、17、または 21 の最新のマイナーバージョンなど)をインストールします。

    OpenJDK のバージョンを指定するには、アプリケーションのルートディレクトリに system.properties Java プロパティファイル を追加します。次のサンプルコードは、OpenJDK 21 を指定する方法を示しています。

    java.runtime.version=21
  • Maven オプション

    MAVEN_OPTS 環境変数を使用して、Maven 設定を適用できます。この環境変数を指定するには、project.toml ファイルを追加します。

    デフォルトでは、CNBs は Maven 3.9 のみをサポートしています。アプリケーションが他の Maven バージョンに依存している場合は、Maven Wrapper(mvnw) を使用します。CNBs は、プロジェクトのルートディレクトリにある mvnw を使用してアプリケーションをビルドします。

    Maven Wrapper を使用するには、次のコマンドを実行します。

    mvn wrapper:wrapper # .mvn ディレクトリ、mvnw、および mvnw.cmd ファイルを生成します。
    git add .mvn mvnw mvnw.cmd
    git commit -m "support maven wrapper"
    git push origin # ブランチをコードリポジトリに送信します。
  • Procfile

    Procfile は、アプリケーションを起動するために使用されるプロセスタイプとコマンドを宣言します。詳細については、このトピックの「Procfile の概要」セクションをご参照ください。Spring Boot アプリケーションの場合、Procfile は、プラットフォームが Spring Boot アプリケーションを起動する方法を定義します。次のサンプルコードは、Spring Boot アプリケーションの一般的な Procfile を示しています。

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

サンプルプロジェクト

詳細については、「buildpacks-jvm」をご参照ください。

Python

アプリケーションの要件

Python アプリケーションの場合、ソースコードのルートディレクトリは requirements.txt ファイルまたは poetry.lock ファイルに保存する必要があります。

構成に関する注意事項

  • Python のバージョン

    デフォルトでは、CNBs は最新の Python バージョン(3.13)をインストールします。他の Python バージョンを使用する場合は、アプリケーションのルートディレクトリに .python-version ファイルを追加し、使用する Python バージョンを指定します。サンプルコード:

    $ cat .python-version
    3.13
  • Procfile

    Procfile は、アプリケーションのルートディレクトリにあるテキストファイルです。Python アプリケーションの場合、Procfile は、アプリケーションを起動するために使用されるプロセスタイプとコマンドを宣言します。次のサンプルコードは、Python アプリケーションの Procfile を示しています。

    web: gunicorn --config gunicorn.conf.py gettingstarted.wsgi
    説明

    Procfile は、単純なアプリケーションには必須のファイルではありません。ただし、Python アプリケーションに Procfile を追加することを強くお勧めします。詳細については、このトピックの「Procfile の概要」セクションをご参照ください。

サンプルプロジェクト

詳細については、「buildpacks-python」をご参照ください。

Go

アプリケーションの要件

Go アプリケーションには、次の要件が適用されます。

  • コードリポジトリのルートディレクトリには、go.mod ファイルが含まれている必要があります。go.mod ファイルの module name には、少なくとも 1 つのスラッシュ(/)が含まれている必要があります。

  • Go アプリケーションは、コンパイルに Go 1.16 以降をサポートしています。Go アプリケーションは、依存関係のインストールに Go モジュールもサポートしています。

    説明

    CNBs は、Go モジュールなどの Go 依存関係管理のみをサポートしています。dep、godep、govendor、glide などのサードパーティの依存関係マネージャーはサポートされていません。

構成に関する注意事項

  • Go のバージョン

    CNBs は、go.mod ファイルの go 行から Go のバージョンを読み取ります。

    たとえば、CNB は Go 1.17 から最新のリリースを選択します。サンプルコード:

    go 1.17
  • 依存関係管理

    • コードリポジトリのルートディレクトリに vendor/modules.txt ファイルが含まれている場合、CNBs は Go モジュールをダウンロードする代わりに、vendor ディレクトリにある Go モジュールを使用しようとします。

    • コードリポジトリのルートディレクトリに vendor/modules.txt ファイルが含まれていない場合、CNBs はコンパイル前に Go モジュールをダウンロードします。

  • パッケージのインストール

    CNBs は、プロジェクトによって検出されたすべての main パッケージをビルドします。

サンプルプロジェクト

詳細については、「buildpacks-go」をご参照ください。

Node.js

アプリケーションの要件

Node.js アプリケーションには、次の要件が適用されます。

  • ビルドプロセス中に、有効な package.json ファイルを CNBs 用に準備する必要があります。

  • 依存関係をインストールするには、有効な npmyarn、または pnpm lock ファイルを準備する必要があります。

構成に関する注意事項

Node.js のバージョン

Node.js のバージョンを指定するには、package.json ファイルの engines.node フィールドを指定します。Node.js のバージョンを指定しない場合、最新の LTS バージョンが使用されます。

package.json ファイルで Node.js のバージョンを指定します。たとえば、20 行目に最新バージョンを指定します。サンプルコード:

{"
   engines":{"
     node":"20.x"
   }
}
説明

このフィールドは、package.json ファイルと同じ構文をサポートして、セマンティックバージョンを制御します。予期しない変更を防ぐために、Node.js のバージョンを指定することを強くお勧めします。

サンプルプロジェクト

詳細については、「buildpacks-nodejs」をご参照ください。

PHP

アプリケーションの要件

プログラミング言語が PHP の場合、アプリケーションは次の要件を満たす必要があります。

  • PHP 8.2、PHP 8.3、および PHP 8.4 をサポートします。

  • アプリケーションリポジトリのルートディレクトリには、composer.json ファイルと composer.lock ファイルが含まれている必要があります。

構成

PHP

composer.json で PHP ランタイムバージョンを指定します。次のサンプルコードは、PHP 8.2.0 以降のバージョンを指定しています。

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

詳細については、「buildpacks-php」および「php-support」をご参照ください。

project.tomlProcfile の概要

  • クリックして project.toml の概要と構成を表示する

    • project.toml の概要

      project.toml(プロジェクト記述子とも呼ばれます)は、プロジェクトルートディレクトリに保存する必要があるプレーンテキストファイルです。このファイルを使用して、コードリポジトリを詳細に構成できます。たとえば、project.toml ファイルを使用して、使用する buildpack、含めるファイルと除外するファイル、およびコードリポジトリのビルド時に環境変数を構成する方法を指定できます。詳細については、「project.toml」をご参照ください。

    • project.toml の構成

      project.toml ファイルには、主に次の構成が含まれています。project.toml ファイルの他の構成の詳細については、「project.toml の使用」をご参照ください。

      • イメージのビルド時に環境変数を構成する

        プロジェクトのルートディレクトリで、project.toml ファイルの記述子を作成または更新します。環境変数の例:

        [_]
        schema-version = "0.2" # 必須。スキーマバージョン 0.1 はビルド環境をサポートしていません。
        
        [[io.buildpacks.build.env]]
            name = "MAVEN_OPTS"
            value = "-Xms128m -Xmx512m"
        [[io.buildpacks.build.env]]
            name = "環境変数 2 の名前"
            value = "環境変数 2 の値"
      • オプション。project.toml ビルダーを指定する

        アプリケーション管理はデフォルトのビルダーを指定します。ビルダーを指定することもできます。サンプルコード:

        [io.buildpacks]
        builder = "cnbs/sample-builder:noble"
  • クリックして Procfile の概要と形式を表示する

    • Procfile の概要

      Procfile は、アプリケーションのルートディレクトリにある、ファイル名拡張子がないプレーンテキストファイルです。このファイルは、ルートディレクトリにのみ保存する必要があります。Procfile を使用すると、任意のプログラミング言語でアプリケーションのデフォルトの起動プロセスを置き換えることができます。詳細については、「Procfile」をご参照ください。

    • Procfile の形式

      Procfile は、個々の行にプロセスタイプを宣言します。各行の形式は次のとおりです。

      PROCESS_TYPE: COMMAND

      次のフィールドと値を置き換えます。

      • PROCESS_TYPEwebworkercustom などのプロセスタイプに置き換えます。

      • COMMAND を、gunicorn -b :$PORT main:app など、そのタイプのプロセスを起動するために使用されるコマンドに置き換えます。