使用Now部署GraphQL服务

本文属使用Prisma构建GraphQL服务系列。

当搞定了GraphQL服务端开发,且经过充分测试,那么接着需要部署上线。
本文中,我们来了解下如何使用Now CLI(Zeit团队的一个惊人的One-Click部署工具,支持windows、macos、linux)来部署您的GraphQL服务。

本文包括两部分:

  • 基本使用:了解如何基于GraphQLnode-basic样板项目,使用Now进行简单直接部署。
  • 高级使用:了解如何基于GraphQLnode-basic样板项目,使用Now环境变量进行部署。

安装Now桌面版

首先下载Now桌面版并登录。

(1) 浏览器打开https://zeit.co/download,点击DOWNLOAD按钮。

注意:桌面版Now包含Now CLI。

使用Now部署GraphQL服务_第1张图片
now.png

基本使用

GraphQL 服务起步

在本教程中,您将使用 node-basic的GraphQL样板项目作为要部署的示例服务。访问此样板文件的最简单方法是使用GraphQL CLI中的graphql create命令。

此样板项目基于graphql-yoga——轻量级GraphQL服务器,基于Express.jsapollo-servergraphql-tools

(2) 如果您尚未安装GraphQL CLI,请先安装。然后,用graphql create来启动你的GraphQL服务:

npm install -g graphql-cli
graphql create hello-basic --boilerplate node-basic

(3) 当提示您在何处(即向哪个群集cluster)部署您的Prisma服务时,请选择其中一个公共群集(public cluster)选项:prisma-eu1prisma-us1

上面的graphql create命令创建一个名为hello-basic的新目录,其中放置了GraphQL服务的源文件以及所属Prisma服务的配置。

使用now部署服务

now命令会上传源文件并调用在package.json中定义的start脚本来启动远程服务器,如下:

{
  "scripts": {
    "start": "dotenv -- nodemon -e ts,graphql -x ts-node src/index.ts",
    "dev": "npm-run-all --parallel start playground",
    "debug": "dotenv -- nodemon -e ts,graphql -x ts-node --inspect src/index.ts",
    "playground": "graphql playground",
    "build": "rimraf dist && tsc"
  }
}

如此,具备部署GraphQL服务的基础。

(4) 切换到hello-basic目录并执行:

cd hello-basic
now

注意:如果这是您第一次使用now,它会要求您使用其服务进行身份验证。

如此,您的GraphQL服务现在已经部署并可在CLI输出的URL下使用。该URL看起来类似于https://hello-basic-__ID__.now.sh(其中IDnow生成的服务的随机ID)

高级使用:使用环境变量部署

GraphQL 服务起步

(5) 在终端中,导航到一个新目录并按照以下步骤下载node-advanced样板:

graphql create hello-advanced --boilerplate node-advanced

(6) 像上面一样,当提示何处部署服务时,请选择prisma-eu1prisma-us1

该服务现在部署到开发群集。

使用now部署服务

这次,您的服务需要设置特定的环境变量。如果您现在像上一节那样运行,部署将不会成功 - 或者说部署的Playground无法正常运行,因为它不知道应该运行哪个Prisma服务。因为这些信息现在是以环境变量的形式提供的。

这就是你可以now命令的--dotenv选项!其参数为.env文件名称,.env文件中指定了环境变量。

.env文件是用于指定环境变量的约定/最佳实践。许多工具(例如Docker或其他部署工具)“明白”.env文件——now使用--dotenv标志亦如此。

(7) 只需切换到hello-advanced目录并使用该参数调用即可:

cd hello-advanced
now --dotenv .env

如果您使用Docker在本地部署Prisma服务,则.env文件将包含环境变量PRISMA_ENDPOINTPRISMA_CLUSTER的本地引用(如http:// localhost:60000/hello-advanced/dev)。在这种情况下,你可以创建另一个.env文件(如.env.prod),使PRISMA_ENDPOINTPRISMA_CLUSTER设置适当的远程URL(当然,这需要你正确地部署Prisma的服务之前在网络上一些公共集群),然后在部署过程中参考:

now --dotenv .env

使用now时,可以在这里找到一些关于如何处理环境变量和secrets的文档。

你可能感兴趣的:(使用Now部署GraphQL服务)