使用 Google Cloud App Engine 将前端和后端部署为两个单独的应用程序

Deploying FrontEnd and BackEnd as two separate applications with Google Cloud App Engine

我有两个应用程序想用 Google Cloud App Engine 部署。

其中一个是反应前端,我想通过www.videoo.io

来服务这个

第二个是后端,将通过 api.videoo.io

提供服务

前端 yaml 文件 react.yaml :

runtime: nodejs16

env: standard
handlers:
- url: /static
  static_dir: static
  secure: always

- url: www.videoo.io/*
  service: frontend
  script: auto
  secure: always%   

API yaml 文件,api.yaml :

runtime: python37
entrypoint: gunicorn -b :$PORT videoo.wsgi

service: "videoo-api"
env: standard
handlers:

- url: api.videoo.io/*
  service: backend
  script: auto
  secure: always%   

这是实现此目标的正确方法吗?

为这两个将交互通信的独立应用程序提供服务的最佳策略是什么(前端将调用 API 以获取存储在 Django 应用程序中的对象信息)?

这也是我在 Google App Engine 设置中的域名信息:

  1. 你走在正确的道路上。您正在使用 microservices 架构,该架构基本上是在单个项目下将各个应用程序作为部件(服务)部署。

  2. 您的前端服务似乎是您的默认服务,因此您不需要它的服务名称。每个 GAE 应用程序都需要 default service.

  3. react.yaml 重命名为 app.yaml(因为它将成为您的默认服务)并将内容更新为

    runtime: nodejs16
    
    env: standard
    handlers:
    - url: /static
      static_dir: static
      secure: always
    
    - url: /.*
      script: auto
      secure: always   
    
  4. 同时将您的 api.yaml 重命名为 backend.yaml 因为这就是您对服务的称呼(不确定是否需要这样做,但我这样做是为了轻松跟踪正在控制的内容我的服务)。更新文件内容为

    service: backend
    runtime: python37
    entrypoint: gunicorn -b :$PORT videoo.wsgi
    env: standard
    
    handlers:
    - url: /.*
      script: auto
      secure: always   
    
  5. 您需要一个 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
  1. 最后一步是,在部署期间,除了 dispatch.yaml 文件外,您还将部署 2 项服务。 dispatch.yaml 文件必须位于您的项目根文件夹中
gcloud app deploy app.yaml dispatch.yaml <path_to_backend.yaml>