2
0

More than 1 year has passed since last update.

Next.js + サーバーサイドTypeScript + 関数フレーバーでクリーンなアプリを作ったので実装意図とか書く Advent Calendar 2022
23日目株式会社mofmofに生息しているshwldです。

前日はNext.js+URQL環境でPostgreSQLのPub/Subを使ったGraphQL Subscriptionについて書きました

Next.jsとgraphile-workerをRailwayにデプロイする

先日こういう記事を書きました。
上の記事内でも書いていますが、このアドベントカレンダーで作っているサービスはRailwayにホスティングしています。

ホスティングするべき項目

  • web (Next.js)
  • worker (graphile-worker)
  • db (PostgreSQL)

今回は、これらを利用します。

Webサービスをデプロイする

builderは選択できますが、Nixpacksという、Railwayが開発しているビルドツールを使いました。
これは、Herokuのbuildpackと似たもので、buildしてOpen Container Initiative (OCI)準拠のイメージを作成するようなツールになっているようです。

一般的なアプリケーションに必要な依存は含まれていそうで、今回のケースでも特に困ることなくビルドできました。

Turbopackを使ったmonorepoで作成していますが、webアプリケーションはソースコードのルートで、 yarn buildyarn start するだけで起動するようになっています。
なので、特に特別な設定は行っていません。

ちなみに今回未設定ですが、RailwayではHeroku同様 Procfile によってビルド、開始コマンドを指定できるようです。

一点だけ見つけづらいなと思ったのが、エンドポイントとなるドメインの設定です。
RailwayはDomainsに自動でrailwayのドメインが付与されているわけではなく、Next.jsなどのように外部からアクセスして使うサービスの場合、domainを指定して付与する必要があるのですが、どこから設定するのか最初見つけられませんでした。

image.png
SettingのここにDomainsがあり、ここでrailwayドメインとカスタムドメインを付与できます。

ワーカーサービスをデプロイする

Webサービスと同様に設定し、 yarn start:worker という用意したコマンドをスタートコマンドに指定するだけでした。
ちなみに、コマンドはこんなふうに定義しています

package.json
{
 "scripts": {
    "build": "turbo run build",
    "start": "yarn workspace web start",
    "start:worker": "yarn workspace worker start"
  }
}

/package.json

次回予告

明日は、GraphQLのUnionやInputTypeについて書きます

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0