使用 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 设置中的域名信息:
你走在正确的道路上。您正在使用 microservices 架构,该架构基本上是在单个项目下将各个应用程序作为部件(服务)部署。
您的前端服务似乎是您的默认服务,因此您不需要它的服务名称。每个 GAE 应用程序都需要 default service.
将 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
- 最后一步是,在部署期间,除了 dispatch.yaml 文件外,您还将部署 2 项服务。 dispatch.yaml 文件必须位于您的项目根文件夹中
gcloud app deploy app.yaml dispatch.yaml <path_to_backend.yaml>
我有两个应用程序想用 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 设置中的域名信息:
你走在正确的道路上。您正在使用 microservices 架构,该架构基本上是在单个项目下将各个应用程序作为部件(服务)部署。
您的前端服务似乎是您的默认服务,因此您不需要它的服务名称。每个 GAE 应用程序都需要 default service.
将
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
- 最后一步是,在部署期间,除了 dispatch.yaml 文件外,您还将部署 2 项服务。 dispatch.yaml 文件必须位于您的项目根文件夹中
gcloud app deploy app.yaml dispatch.yaml <path_to_backend.yaml>