【发布时间】:2020-07-27 12:09:39
【问题描述】:
首先,我创建一个Google App Engine,并在我的自定义域(我们将其称为:mysite.ms)上部署 API 和前端。 API 用nodejs 和Express 编写,前端是React 应用程序。这是我用于部署的 app.yml 文件:
runtime: nodejs
env: flex
manual_scaling:
instances: 1
resources:
cpu: .5
memory_gb: 0.5
disk_size_gb: 10
handlers:
- url: /
static_files: www/build/index.html
upload: www/build/index.html
- url: /
static_dir: www/build
现在,我想要分离元素。在mysite.ms 域上仅部署React 应用程序,在子域sub.mysite.ms 上部署API。由于该域在 freenom 上被接管,为了创建一个子域,我添加了一个类型为 CNAME 的新 DNS,其值为 sub.mysite.ms,并以原始域 mysite.ms 为目标。
是否可以仅使用 Google App Engine 和单个 app.yml 文件来创建这些单独的部署,或者您是否需要使用其他工具来分离文件?
你建议我如何继续?由于我在网上找不到任何明确的内容,您能否给我一些解决这些问题的提示?
更新
我已阅读您提供给我的文档,对此我有些疑问。首先,如何创建不同的服务?因为我创建了这个(但很可能是错误的)dispatch.yml:
dispatch:
- url: "mysite.ms/*"
service: default
- url: "sub.mysite.ms/*"
service: api
但是当我使用这个命令gcloud app deploy dispatch.yaml 进行部署时,我收到一个错误,因为它找不到模块“api”。
在以前的版本中,在我的server.js 中,我有这段代码来处理React:
app.use(express.static(path.resolve(__dirname, 'www', 'build')));
app.get('*', (req, res) => { res.sendFile(path.resolve(__dirname, 'www', 'build', 'index.html')); });
是否应该保留这两行代码,即使我将前端和 api 拆分在不同的域中?
我应该将
sub.mysite.ms添加到 Google App Engine 部分的自定义域区域吗?即使我有
dispath.yaml,我是否应该保留文件app.yml?
【问题讨论】:
-
您需要使用
services和dispatch.yaml。 cloud.google.com/appengine/docs/standard/nodejs/…cloud.google.com/appengine/docs/standard/nodejs/reference/…
标签: node.js express google-app-engine google-cloud-platform