前提
ローカル開発用サーバまで構築済み。
(ただし、ルーティングの動作確認は実際にデプロイしないと確認できない)
ローカル環境 → 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ブラウザで開いて確認すれば良い。
- defaultサービス:http://GAEのURL/
- defaultサービス:http://GAEのURL/service1
- defaultサービス:http://GAEのURL/service2
- service1サービス:http://GAEのURL/service1/
- service1サービス:http://GAEのURL/service1/abc
- service2サービス:http://GAEのURL/service2/
- service2サービス:http://GAEのURL/service2/abc
ルーティングを削除するには、下記1行のdispatch.yamlをデプロイすれば良い。
dispatch: []