Railway とは
Heroku のような PaaS です。
結論
「トークン生成」→「CLI インストール」→「コマンド実行」の流れです。
1. トークン生成
Project Settings
のページの Tokens
のメニューに行き、New Token
にてトークンを生成します。
トークンの名前は任意に命名することができます。ただし、Railway で実際に使う際にはすべて RAILWAY_TOKEN
と指定して使います。つまり、「命名するトークンの名前は人間が区別するためだけに付けられるもの」になります*1。
「トークンを目的別や利用者別に複数発行する場合にそれを判別しやすくする名前を付ける」、というのが一般的な命名の目的でしょうか。
2. CLI インストール
Railway の CLI コマンドを npm や yarn でインストールします*2。
$ npm i -g @railway/cli
3. コマンド実行
コマンドを実行します。環境変数 RAILWAY_TOKEN
に先ほど作成したトークンを指定して実行します*3。
まずは $ railway status
を実行して正しくトークンが認識された上で実行できるかを確認しましょう。他にどんなことができるかは $ railway --help
で確認できます。
$ RAILWAY_TOKEN=abc-123-def-456 railway status Project: foobar_project Environment: production Plugins: Services: hoge_service fuga_service
デプロイ方法
CLI を用いてデプロイするためには $ railway up
を使います。
プロジェクトに複数のサービスが存在する場合には --service サービス名
を付与すると、サービス選択の対話が不要になるので楽です。CI (CD) では対話プロンプトが発生すると実行が止まって失敗してしまうので、必ず指定しておきます*4。
# サービス名を指定しない場合 $ RAILWAY_TOKEN=abc-123-def-456 railway up Use the arrow keys to navigate: ↓ ↑ → ← and / toggles search ? Select Service: ▸ hoge_service fuga_service
# サービス名を指定する場合 $ RAILWAY_TOKEN=abc-123-def-456 railway up --service fuga_service (デプロイが開始される)
補足
CI/CD で $ railway up コマンドを実行してデプロイすると、どうも遅いように感じます。また、連続してデプロイが続くと「詰まる」ことがあり、コンソールからデプロイをキャンセルしないといけないことがありました。「詰まり」があるときにはメモリの使用量が多くなっており、クレジットを大量に消費していました。
今のところ、自動でデプロイする場合には Railway が用意していくれている GitHub 連携を用いるのが無難なようです。
手動ですと $ railway up は早いしとても便利です。