我有两个应用程序想要使用 Google Cloud App Engine 进行部署。
其中之一是 React 前端,我想通过 MYFRONTEND.com 提供此服务
第二个是后端,将通过 api.MYBACKEND.com 提供服务
前端yaml文件react.yaml:
runtime: nodejs16
env: standard
handlers:
- url: /static
static_dir: static
secure: always
- url: www.MYFRONTEND.com/*
service: frontend
script: auto
secure: always%
API yaml 文件,api.yaml :
runtime: python37
entrypoint: gunicorn -b :$PORT MYAPPLICATION*emphasized text*.wsgi
service: "MYBACAKEND-api"
env: standard
handlers:
- url: api.MYBACKEND/*
service: backend
script: auto
secure: always%
这是实现这一目标的正确方法吗?
为这两个交互式通信的独立应用程序提供服务的最佳策略是什么(前端将调用 API 来获取存储在 Django 应用程序中的对象信息)?
您走在正确的道路上。您正在使用微服务架构,该架构基本上将各个应用程序部署为单个项目下的部分(服务)。
您的前端服务似乎是您的默认服务,因此您不需要它的服务名称。每个 GAE 应用程序都需要一个默认服务。
将
react.yaml
重命名为 app.yaml
(因为它将成为您的默认服务)并将内容更新为
runtime: nodejs16
env: standard
handlers:
- url: /static
static_dir: static
secure: always
- url: /.*
script: auto
secure: always
还将您的
api.yaml
重命名为backend.yaml
,因为这就是您所说的服务(不确定是否需要这样做,但我这样做是为了轻松跟踪控制我的服务的内容)。将文件内容更新为
service: backend
runtime: python37
entrypoint: gunicorn -b :$PORT videoo.wsgi
env: standard
handlers:
- url: /.*
script: auto
secure: always
您需要一个 dispatch.yaml 文件将流量路由到不同的服务。类似的东西
dispatch:
# Send all api traffic to the backend service.
- url: "api.videoo.io/*"
service: backend
# Send all other traffic to the default (frontend).
- url: "*/*"
service: default
gcloud app deploy app.yaml dispatch.yaml <path_to_backend.yaml>