Google App Engine(GAE)是一个无服务器(某人的其他计算机)平台,可帮助组织为可扩展性,安全性,可靠性,可访问性和可审核性提供准备。它可利用组织专注于业务逻辑,而Google作为云提供商管理其基础设施部署。
通常,企业有多种用不同语言开发的应用程序。在不手动旋转Docker服务的情况下,部署此类体系结构变得挑战。这样的基础架构可以包括Web或客户端接口,后端服务器,推荐服务器和分析服务器等。
如果需要,可以将这些各种业务逻辑部署到具有不同版本的单个GAE项目中。在本文中,我们部署了使用vue.js和node.js服务器应用程序开发的客户端应用程序。选择这是基本应用程序是为了使我们的生活更轻松。但是可以采用更复杂的应用程序。
让我们从虚拟化客户端项目树开始:
.
├── README.md
├── app.yaml
├── index.html
├── node_modules
├── package-lock.json
├── package.json
├── public
│ └── vite.svg
├── src
│ ├── App.vue
│ ├── assets
│ │ ├── avatar.png
│ │ └── vue.svg
│ ├── components
│ │ ├── core
│ │ ├── generics
│ │ └── user
│ ├── config
│ │ └── index.js
│ ├── database
│ │ └── index.js
│ ├── firebase
│ │ └── index.js
│ ├── main.js
│ ├── router
│ │ └── index.js
│ ├── service
│ │ └── index.js
│ ├── store
│ │ ├── index.js
│ │ └── modules
│ ├── style.css
│ ├── utils
│ │ └── index.js
│ └── views
│ ├── Dashboard.vue
│ ├── Login.vue
│ ├── NotFound.vue
│ └── Register.vue
└── vite.config.js
node_modules
目录被编辑为最大化空间。如果我们正在查看项目树,则有一个app.yaml
文件包含GAE命令和所需的应用程序参数,如下所示:
# Runtime engine nodejs 18 LTS
runtime: nodejs18
service: default
handlers:
# Serve all static files with urls ending with a file extension
- url: /(.*\..+)$
static_files: dist/\1
upload: dist/(.*\..+)$
# catch all handler to index.html
- url: /.*
static_files: dist/index.html
upload: dist/index.html
它具有runtime
,service
和handler
的路由请求。值得一提的是,第一个部署的应用程序默认为服务名称,并且如果跳过,可能会出现错误。您可以阅读documentation以获取更多信息。
导航到Google Cloud Console并配置CloudBuild Service帐户xxxxxxxxxxxxxx@cloudbuild.gserviceaccount.com
,由Add App Engine Deployer
,App Engine Deployer
和Storage Object Viewer
角色。
接下来,让我们通过运行命令npm run build
来构建vue.js项目。然后,我们将通过从根目录中运行以下命令gcloud app deploy --project <project-name>
部署应用程序。部署成功后,导航到https://<project-name>.<region_id>.r.appspot.com/
访问默认应用程序。
要在同一项目中部署node.js服务器服务,我们遵循同一过程。首先,项目树看起来如下:
.
├── README.md
├── app.yaml
├── controllers
│ └── user.js
├── database
│ └── index.js
├── index.js
├── lib
│ └── auth.js
├── migrate.js
├── node_modules
├── package-lock.json
├── package.json
└── routes
└── user.js
这是一个简单且典型的node.js应用程序,我们的兴趣是app.yaml
文件,其中包含以下键值对runtime: nodejs18
和service: server
。如上所述,我们将通过从根目录中运行以下命令gcloud app deploy --project <project-name>
来部署应用程序。并通过导航到https://<service-name>-dot-<project-name>.<region_id>.r.appspot.com/
访问申请。
我们可能需要添加的最后一件事是将域名映射到这些服务中。为此,我们可以将dispatch.yaml
文件发送到客户端或服务器应用程序。
dispatch:
- url: "www.client.com/*"
service: default
- url: "client.com/*"
service: default
- url: "server.com/*"
service: server
客户端应用程序是可取的,因为它是默认应用程序。值得一提的是,我们可以将调度文件的包含包含在各个应用程序中,选择是您的。确保您已在应用程序引擎的custom domain
选项卡中添加了所有域和子域。
然后通过运行命令gcloud app deploy dispatch.yaml
部署dispatch.yaml
文件。如果所有部署都成功,则访问调度文件中的任何URL都应打开任何映射的应用程序。
再次,我们仅部署了两项服务,但要适合我们的特殊性可能更适合。本教程的存储库在github上。
如果您喜欢这篇文章,请喜欢并与朋友分享。