App Engine フレキシブル環境でカスタム ランタイム アプリを作成する
リージョン ID
REGION_ID
は、アプリの作成時に選択したリージョンに基づいて Google が割り当てる省略形のコードです。一部のリージョン ID は、一般的に使用されている国や州のコードと類似しているように見える場合がありますが、このコードは国または州に対応するものではありません。2020 年 2 月以降に作成されたアプリの場合、REGION_ID.r
が App Engine の URL に含まれています。この日付より前に作成されたアプリの場合、URL のリージョン ID は省略可能です。
カスタム ランタイムを使用すると、Dockerfile で定義された環境で動作するアプリを構築できます。Dockerfile を使用することで、Google Cloud に含まれていない言語やパッケージを使用したり、App Engine フレキシブル環境で使用されているものと同じリソースやツールを利用したりできます。
このクイックスタートでは、nginx ウェブサーバーで、カスタム ランタイムを使用して App Engine を起動します。
始める前に
このクイックスタートでサンプルアプリを実行する前に、環境を設定して App Engine 用に新しい Google Cloud プロジェクトを作成する必要があります。
Google Cloud コンソールを使用して新しい Google Cloud プロジェクトを作成します。
Google Cloud コンソールを開きます。
[プロジェクトの作成] をクリックし、新しい Google Cloud プロジェクトの名前を付けます。
新しい請求先アカウントを作成するか、既存のアカウントを設定して、新しい Google Cloud プロジェクトの請求を有効にします。
Google Cloud CLI をダウンロードしてインストールし、gcloud CLI を初期化します。
次の
gcloud
コマンドを実行して App Engine アプリケーションを作成し、アプリを実行するリージョンを指定します。gcloud app create
App Engine のロケーション
App Engine はリージョナルです。つまり、アプリを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google が管理しています。
レイテンシ、可用性、耐久性の要件を満たすことが、アプリを実行するリージョンを選択する際の主な要素になります。一般的には、アプリのユーザーに最も近いリージョンを選択できますが、App Engine が使用可能なロケーションと、アプリが使用するその他の Google Cloud プロダクトおよびサービスのロケーションを考慮する必要があります。使用するサービスが複数のロケーションにまたがっていると、アプリのレイテンシだけでなく、料金にも影響する可能性があります。
設定したアプリのリージョンは変更できません。
すでに App Engine アプリケーションを作成している場合は、次のいずれかの方法でそのリージョンを表示できます。
gcloud app describe
コマンドを実行します。Google Cloud コンソールの App Engine ダッシュボードを開きます。ページの上部にリージョンが表示されます。
Hello World アプリをダウンロードする
Hello World サンプルアプリを GitHub からローカルマシンにダウンロードするには、次のいずれかを選択します。
次のリポジトリから Hello World サンプルアプリのクローンを作成します。
git clone https://github.com/GoogleCloudPlatform/appengine-custom-runtimes-samples
zip ファイルとしてサンプルをダウンロードし、ローカル ディレクトリに展開します。
サンプルコードがある
nginx
ディレクトリに移動します。たとえば、次のようになります。cd appengine-custom-runtimes-samples/nginx
ローカルマシンで Hello World を実行する
Docker をダウンロードしてインストールし、ローカルマシンで Hello World コンテナを実行することで、サンプルアプリをテストできます。
この時点で、App Engine に固有の手順はありませんので、希望するツールやアプローチを使ってサンプルアプリをテストできます。
App Engine に Hello World をデプロイする
サンプルアプリを App Engine にデプロイする準備ができたら、次の手順を行います。
app.yaml
とDockerfile
が配置されているディレクトリから次のコマンドを実行します。gcloud app deploy
オプションのフラグをご覧ください。
ブラウザを起動して
https://PROJECT_ID.REGION_ID.r.appspot.com
でアプリを動作させるには、次のコマンドを実行します。gcloud app browse
共通の gcloud
コマンドフラグ
- アプリのバージョンを一意に識別する ID を指定するには
--version
フラグを含めます。このフラグを含めない場合は自動的に生成されます。例:--version [YOUR_VERSION_ID]
-
gcloud
ツールでデフォルトとして初期設定したものに代わる Google Cloud プロジェクト ID を指定するには、--project
フラグを指定します。例:--project [YOUR_PROJECT_ID]
例:
gcloud app deploy --version pre-prod-5 --project my-sample-app
コマンドラインからアプリをデプロイする方法について詳しくは、アプリのテストとデプロイをご覧ください。すべてのコマンドフラグの一覧については、gcloud app deploy
リファレンスをご覧ください。
クリーンアップ
このページで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
- In the Google Cloud console, go to the Manage resources page.
- In the project list, select the project that you want to delete, and then click Delete.
- In the dialog, type the project ID, and then click Shut down to delete the project.
次のステップ
Dockerfile の詳細については、Dockerfile リファレンスを参照してください。
独自のカスタム ランタイムを作成する方法については、カスタム ランタイムの作成をご覧ください。
コードのレビュー
Hello World は、コンテナを 1 つ作成して 1 つのサービスと 1 つのバージョンのみを実行する、最もシンプルな App Engine アプリです。このセクションでは、このアプリの各ファイルを詳しく説明します。
app.yaml
アプリの構成を指定します。
app.yaml
ファイルはDockerfile
ファイルと同じディレクトリに配置する必要があります。runtime: custom
エントリでランタイムのイメージを定義するDockerfile
を検索するよう App Engine に指定し、env: flex
でフレキシブル環境にデプロイすることを指定します。詳細については、
app.yaml
リファレンスをご覧ください。Dockerfile
サンプルアプリのコンテナの Docker イメージの作成に使用される一連の命令を定義します。
Dockerfile
ファイルはapp.yaml
ファイルと同じディレクトリに配置する必要があります。このDockerfile
は nginx ウェブサーバーをインストールし、いくつかの基本的な構成をコピーします。FROM コマンドは、nginx ウェブサーバーの公式の docker イメージを使用して基本イメージを作成します。
この
Dockerfile
を使用すると、コンテナ イメージに nginx が含まれ、www/
ディレクトリ内のすべてのコンテンツをアプリケーションで使用できます。
Hello World サンプルアプリには、基本的な nginx 構成情報を含む nginx.conf
ファイルと、nginx ウェブサーバーのルートページとして機能する index.html
ファイルも含まれています。