Apollo ServerとNowで作るGraphQLモックサーバ #3 デプロイ編

前回の続き

nomusiclife.hatenablog.jp

ZEIT Nowにデプロイする

Deploying Node.js Apps - ZEIT Documentation

詳しい方法は公式ドキュメントに譲るとして...

一般的なnode appは特に設定をしなくてもプロジェクトディレクトリで now コマンドを実行すればデプロイされ、利用可能な状態になる。
npm scriptsの "start" がエントリーポイントになるので、以下のように設定しておく。

  "scripts": {
    "start": "ts-node src/index.ts"
  },

now.json

また、設定なしでデプロイした場合URLにプロジェクトディレクトリ名が勝手に入ってしまうため、 now.jsonの "name" で明示的にプロジェクト名を設定しておくとよい。

{
  "name": "graphql-server",
  "env": {
    "NODE_ENV": "production"
  }
}

これにより https://graphql-server-foobarbaz.now.sh といったURLにデプロイされるようになる。

GitHubへのpushにフックしてデプロイさせる

手順は以下の通り ZEIT – Now + GitHub

Pull Requestをopenしてブランチをpushするとnow.jsonの設定にしたがってデプロイが始まる。

f:id:nishaya:20180824115112p:plain

デプロイが完了すると下記のようなメッセージが表示され、 commit messageの横にある✓のアイコンからデプロイされた環境にアクセスできるようになる。

f:id:nishaya:20180824115035p:plain

URLを固定する

通常 now でデプロイするとURLが毎回変わってしまう。

デプロイする度にAPIのURLが変わってしまうのは困るので、URLを固定するためにaliasを使う。

Aliases and Domains - ZEIT Documentation

{
  "name": "graphql-server",
  "alias": "graphql-server-foobar.now.sh",
  "env": {
    "NODE_ENV": "production"
  }
}

now.jsonに "alias" として、[任意の文字列].now.sh を追加し、 now alias を実行すると、現在のdeploymentが指定したaliasでアクセスできるようになる。


モニタリング編に続く

nomusiclife.hatenablog.jp