App Engine アプリを構成するには、app.yaml
ファイルを使用します。このファイルには、CPU、メモリ、ネットワーク リソース、ディスク リソース、スケーリングをはじめとする、環境変数を含む全般的な設定が含まれています。新しい Java 11 以降のバージョンを選択するか、古い Eclipse Jetty 9.3 または Java 8 バージョンを使用できます。Eclipse Jetty 9.3 と Java 8 の場合は、Maven または Gradle を使用できます。
app.yaml
ファイルの概要
バージョンや URL など、Java アプリのすべてのランタイム構成を app.yaml
ファイルに指定できます。このファイルは、特定のサービス バージョンのデプロイ記述子として機能します。
追加サービス用に app.yaml
ファイルを作成してデプロイするには、その前に、default
サービス用の app.yaml
ファイルを作成する必要があります。
次の app.yaml
は、Java バージョン 8、11、17 以降のアプリを構成する方法を示しています。新しいバージョンを使用するには app.yaml
ファイルを更新する必要があることに留意してください。新しいバージョンの使用の詳細については、Java ランタイムをご覧ください。
バージョン 17 以降
runtime: java
env: flex
runtime_config:
operating_system: "ubuntu22"
runtime_version: "21"
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
バージョン 11
runtime: java
env: flex
runtime_config:
operating_system: "ubuntu18"
runtime_version: "11"
handlers:
- url: /.*
script: this field is required, but ignored
manual_scaling:
instances: 1
バージョン 8
アプリのサービスの複雑さによっては、対応する app.yaml
ファイルの一部の要素を定義するだけで済む場合もあります。次の例では、Java アプリをフレキシブル環境に配置する場合に必要となる内容について示します。
app.yaml
ファイルには一意の名前を指定できます。ただし、その場合はデプロイ コマンドでもそのファイル名を指定する必要があります。たとえば、app.yaml
ファイルに service-name-app.yaml
または app.flexible.yaml
という名前を指定した場合は、次のいずれかを使用してアプリをデプロイする必要があります。
gcloud app deploy service-name-app.yaml
gcloud app deploy app.flexible.yaml
app.yaml
ファイルを構造化する方法については、ウェブサービスの構造化をご覧ください。
すべての構成要素
この構成ファイルでサポートされるすべての要素の一覧については、app.yaml
リファレンスをご覧ください。
Java 仮想マシンの指標の収集を有効にする
Java 仮想マシン(JVM)プロセスの一般的な指標を収集するように、Java の App Engine フレキシブル環境を構成します。これらの指標は、Cloud Monitoring と同じ JVM モニタリング プラグインを使用して収集されます。App Engine の指標の一覧については、Google Cloud 指標ガイドをご覧ください。
アプリの JVM 指標を収集する場合:
appengine.googleapis.com/flex/instance/jvm/gc/count
appengine.googleapis.com/flex/instance/jvm/gc/time
app.yaml
の環境変数で次の JMX システム プロパティを設定して、アプリをデプロイする必要があります。
JAVA_USER_OPTS: "-Djava.rmi.server.hostname=172.17.0.1 -Dcom.sun.management.jmxremote.port=10403 -
Dcom.sun.management.jmxremote.rmi.port=10403 -Dcom.sun.management.jmxremote.local.only=false -
Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"