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

问题描述 投票:0回答:1

我有两个应用程序想要使用 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 应用程序中的对象信息)?

reactjs django google-app-engine google-cloud-platform app.yaml
1个回答
4
投票
  1. 您走在正确的道路上。您正在使用微服务架构,该架构基本上将各个应用程序部署为单个项目下的部分(服务)。

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

  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>
© www.soinside.com 2019 - 2024. All rights reserved.