shinke1987.net
雑多な備忘録等のはず。
他のカテゴリ・タブ
目次
PR

GAE(PHP)でdispatch.yamlでルーティングの動作確認

2024-08-08 2024-08-08
カテゴリ: GCP PHP

前提

ローカル開発用サーバまで構築済み。
(ただし、ルーティングの動作確認は実際にデプロイしないと確認できない)

ローカル環境 → OS:macOS 14.5 sonoma

ディレクトリ構成

下記のディレクトリ構成で行う。

root
├ app.yaml
├ dispatch.yaml
├ index.php
├ service1
│ ├ service1.yaml
│ └ index.php
└ service2
  ├ service2.yaml
  └ index.php

app.yaml の内容

runtime: php82
env: standard
instance_class: F1
automatic_scaling:
  max_instances: 1
  max_idle_instances: 1
service_account: gae-test-431804@appspot.gserviceaccount.com

service1.yaml の内容

runtime: php82
env: standard
instance_class: F1
automatic_scaling:
  max_instances: 1
  max_idle_instances: 1
service_account: gae-test-431804@appspot.gserviceaccount.com
service: service1

service2.yaml の内容

runtime: php82
env: standard
instance_class: F1
automatic_scaling:
  max_instances: 1
  max_idle_instances: 1
service_account: gae-test-431804@appspot.gserviceaccount.com
service: service2

dispatch.yaml の内容

dispatch:
  - url: "*/"
    service: default
  - url: "*/service1/*"
    service: service1
  - url: "*/service2/*"
    service: service2

root/index.php の内容

<?php

echo <<<EOF
<html>
  <head>
    <title>default</title>
  </head>
  <body>
    default
  </body>
</html>
EOF;

root/service1/index.php の内容

<?php

echo <<<EOF
<html>
  <head>
    <title>service1</title>
  </head>
  <body>
    service1
  </body>
</html>
EOF;

root/service2/index.php の内容

<?php

echo <<<EOF
<html>
  <head>
    <title>service2</title>
  </head>
  <body>
    service2
  </body>
</html>
EOF;

デプロイ

開発用サーバで動作確認できれば良いが、手順が見つからなかったので、実際にデプロイして確認する。

defaultを含む3つのサービスをデプロイする

下記コマンドを実行する。

% gcloud app deploy
% gcloud app deploy service1/service1.yaml service2/service.yaml

service1 と service2 をデプロイした時のログは下記の通り。

Services to deploy:

descriptor:                  [/Users/Macのユーザ名/Development/GoogleAppEngine/GAE-Test/service1/service1.yaml]
source:                      [/Users/Macのユーザ名/Development/GoogleAppEngine/GAE-Test/service1]
target project:              [gae-test-431804]
target service:              [service1]
target version:              [20240808t173059]
target url:                  [service1のURL]
target service account:      [gae-test-431804@appspot.gserviceaccount.com]


descriptor:                  [/Users/Macのユーザ名/Development/GoogleAppEngine/GAE-Test/service2/service2.yaml]
source:                      [/Users/Macのユーザ名/Development/GoogleAppEngine/GAE-Test/service2]
target project:              [gae-test-431804]
target service:              [service2]
target version:              [20240808t173059]
target url:                  [service2のURL]
target service account:      [gae-test-431804@appspot.gserviceaccount.com]


Do you want to continue (Y/n)?  Y

Beginning deployment of service [service1]...
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [service1]...done.        
Setting traffic split for service [service1]...done.
Deployed service [service1] to [service1のURL]
Beginning deployment of service [service2]...
Created .gcloudignore file. See `gcloud topic gcloudignore` for details.
╔════════════════════════════════════════════════════════════╗
╠═ Uploading 0 files to Google Cloud Storage                ═╣
╚════════════════════════════════════════════════════════════╝
File upload done.
Updating service [service2]...done.                    
Setting traffic split for service [service2]...done.
Deployed service [service2] to [service2のURL]

You can stream logs from the command line by running:
  $ gcloud app logs tail -s <service>

To view your application in the web browser run:
  $ gcloud app browse -s <service>

この時点で下記URLに対してアクセス可能。

ただし、インスタンスがサービスの数だけ立ち上がるので注意。

dispatch.yaml をデプロイする

下記コマンドを実行する。

% gcloud app deploy dispatch.yaml

動作確認

下記URLをWebブラウザで開いて確認すれば良い。

ルーティングを削除するには、下記1行のdispatch.yamlをデプロイすれば良い。

dispatch: []
同一カテゴリの記事