コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。
クイックスタート: Cloud Run に PHP サービスをデプロイする

Cloud Run に PHP サービスをデプロイする

シンプルな Hello World アプリケーションを作成してコンテナ イメージにパッケージ化し、コンテナ イメージを Container Registry にアップロードして Cloud Run にデプロイする方法を学習します。ここで説明していない言語を使用することもできます。

準備

  1. Google Cloud アカウントにログインします。Google Cloud を初めて使用する場合は、アカウントを作成して、実際のシナリオでの Google プロダクトのパフォーマンスを評価してください。新規のお客様には、ワークロードの実行、テスト、デプロイができる無料クレジット $300 分を差し上げます。
  2. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  3. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  4. Google Cloud CLI をインストールして初期化します。
  5. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  6. Cloud プロジェクトに対して課金が有効になっていることを確認します。詳しくは、プロジェクトで課金が有効になっているかどうかを確認する方法をご覧ください。

  7. Google Cloud CLI をインストールして初期化します。
    1. Cloud Run サービスのデフォルト プロジェクトを設定するには:
       gcloud config set project PROJECT_ID
      PROJECT_ID は、このクイックスタートで作成したプロジェクトの名前に置き換えます。

サンプル アプリケーションを作成する

PHP でアプリケーションを作成するには:

  1. helloworld-php という名前の新しいディレクトリを作成し、そのディレクトリに移動します。

    mkdir helloworld-php
    cd helloworld-php
    
  2. index.php という名前のファイルを作成し、次のコードを貼り付けます(必ずファイルの先頭に <?php を追加してください)。

    
    $name = getenv('NAME', true) ?: 'World';
    echo sprintf('Hello %s!', $name);
    

    このコードは、「Hello World」という応答メッセージでリクエストに応答します。HTTP 処理は、コンテナ内の Apache ウェブサーバーによって行われます。

  3. ソースファイルと同じディレクトリに Dockerfile という名前の新しいファイルを作成します。PHP Dockerfile は、PORT 環境変数で定義されたポートをリッスンする Apache ウェブサーバーを起動します。

    
    # Use the official PHP image.
    # https://hub.docker.com/_/php
    FROM php:8.0-apache
    
    # Configure PHP for Cloud Run.
    # Precompile PHP code with opcache.
    RUN docker-php-ext-install -j "$(nproc)" opcache
    RUN set -ex; \
      { \
        echo "; Cloud Run enforces memory & timeouts"; \
        echo "memory_limit = -1"; \
        echo "max_execution_time = 0"; \
        echo "; File upload at Cloud Run network limit"; \
        echo "upload_max_filesize = 32M"; \
        echo "post_max_size = 32M"; \
        echo "; Configure Opcache for Containers"; \
        echo "opcache.enable = On"; \
        echo "opcache.validate_timestamps = Off"; \
        echo "; Configure Opcache Memory (Application-specific)"; \
        echo "opcache.memory_consumption = 32"; \
      } > "$PHP_INI_DIR/conf.d/cloud-run.ini"
    
    # Copy in custom code from the host machine.
    WORKDIR /var/www/html
    COPY . ./
    
    # Use the PORT environment variable in Apache configuration files.
    # https://cloud.google.com/run/docs/reference/container-contract#port
    RUN sed -i 's/80/${PORT}/g' /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf
    
    # Configure PHP for development.
    # Switch to the production php.ini for production operations.
    # RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
    # https://github.com/docker-library/docs/blob/master/php/README.md#configuration
    RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
    
  4. .dockerignore ファイルを追加してコンテナ イメージからファイルを除外します。

    # The .dockerignore file excludes files from the container build process.
    #
    # https://docs.docker.com/engine/reference/builder/#dockerignore-file
    
    # Exclude locally vendored dependencies.
    vendor/
    
    # Exclude "build-time" ignore files.
    .dockerignore
    .gcloudignore
    
    # Exclude git history and configuration.
    .gitignore

これでアプリが完成し、デプロイできるようになりました。

ソースから Cloud Run にデプロイする

重要: 以下の説明では、このクイックスタートで使用するプロジェクトのオーナーロールまたは編集者ロールが付与されていることを前提としています。このロールが付与されていない場合は、Cloud Run のデプロイ権限Cloud Build の権限Artifact Registry の権限で必要な権限を確認してください。

ソースからのデプロイでは、ソースコードからコンテナ イメージが自動的にビルドされて、デプロイされます。

ソースからデプロイするには:

  1. ソースコード ディレクトリで、次のコマンドを使用してソースからデプロイします。

    gcloud run deploy

    API を有効にするよう求められたら、「y」と入力して有効にします。

    1. ソースコードの場所を求められたら、Enter キーを押して現在のフォルダにデプロイします。

    2. サービス名の入力を求められたら、Enter キーを押して、デフォルトの名前(helloworld)を受け入れます。

    3. Artifact Registry API を有効にするよう求められたら、y を押します。

    4. リージョンの入力を求められたら、任意のリージョンus-central1 など)を選択します。

    5. 未認証の呼び出しを許可するように求められます。「y」と入力します。

    デプロイが完了するまで少しお待ちください。成功すると、コマンドラインにサービス URL が表示されます。

  2. このサービス URL をウェブブラウザで開き、デプロイしたコンテナにアクセスします。

Cloud Run のロケーション

Cloud Run はリージョナルです。つまり、Cloud Run サービスを実行するインフラストラクチャは特定のリージョンに配置され、そのリージョン内のすべてのゾーンで冗長的に利用できるように Google によって管理されます。

レイテンシ、可用性、耐久性の要件を満たしていることが、Cloud Run サービスを実行するリージョンを選択する際の主な判断材料になります。一般的には、ユーザーに最も近いリージョンを選択できますが、Cloud Run サービスで使用されている他の Google Cloud サービスのロケーションも考慮する必要があります。使用する Google Cloud サービスが複数のロケーションにまたがっていると、サービスの料金だけでなくレイテンシにも影響します。

Cloud Run は、次のリージョンで利用できます。

ティア 1 料金を適用

  • asia-east1(台湾)
  • asia-northeast1(東京)
  • asia-northeast2(大阪)
  • europe-north1(フィンランド) リーフアイコン 低 CO2
  • europe-southwest1(マドリッド) リーフアイコン 低 CO2
  • europe-west1(ベルギー) リーフアイコン 低 CO2
  • europe-west4(オランダ)
  • europe-west8(ミラノ)
  • europe-west9(パリ) リーフアイコン 低 CO2
  • me-west1(イスラエル)
  • us-central1(アイオワ) リーフアイコン 低 CO2
  • us-east1(サウスカロライナ)
  • us-east4(北バージニア)
  • us-east5(コロンバス)
  • us-south1(ダラス)
  • us-west1(オレゴン) リーフアイコン 低 CO2

ティア 2 料金を適用

  • asia-east2(香港)
  • asia-northeast3(ソウル、韓国)
  • asia-southeast1(シンガポール)
  • asia-southeast2 (ジャカルタ)
  • asia-south1(ムンバイ、インド)
  • asia-south2(デリー、インド)
  • australia-southeast1(シドニー)
  • australia-southeast2(メルボルン)
  • europe-central2(ワルシャワ、ポーランド)
  • europe-west2(ロンドン、イギリス)
  • europe-west3(フランクフルト、ドイツ)
  • europe-west6(スイス、チューリッヒ) リーフアイコン 低 CO2
  • northamerica-northeast1(モントリオール) リーフアイコン 低 CO2
  • northamerica-northeast2(トロント) リーフアイコン 低 CO2
  • southamerica-east1(サンパウロ、ブラジル) リーフアイコン 低 CO2
  • southamerica-west1(サンティアゴ、チリ)
  • us-west2(ロサンゼルス)
  • us-west3(ソルトレイクシティ)
  • us-west4(ラスベガス)

Cloud Run サービスをすでに作成している場合は、Google Cloud コンソールの Cloud Run ダッシュボードにリージョンが表示されます。

これで完了です。ソースコードから Cloud Run にコンテナ イメージをデプロイしました。Cloud Run は、受信したリクエストを処理するためにコンテナ イメージを自動的に水平方向にスケールアウトします。リクエスト数が減少すると、インスタンス数がスケールインします。料金は、リクエストの処理中に使用した CPU、メモリ、ネットワークに対してのみ発生します。

クリーンアップ

テスト プロジェクトを削除する

サービスが使用されていない場合、Cloud Run の料金は発生しませんが、コンテナ イメージを Artifact Registry に保存すると課金される場合があります。コンテナ イメージを削除するか、Cloud プロジェクトを削除してこのような料金が発生しないようにできます。Cloud プロジェクトを削除すると、そのプロジェクト内で使用されているすべてのリソースに対する課金が停止します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

次のステップ

コードソースからコンテナをビルドし、リポジトリに push する方法については、以下をご覧ください。