AIイノベーションズ ブログ

【Railway】Config as Code を使う

最終更新日:
阿部隼也
阿部 隼也
AIイノベーションズ 代表取締役社長 | x.com/ai_abe_shunya
リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

Config as Code を使う

Railway には Config as Code (CaC) 機能があり、プロジェクト構成をリポジトリ内の railway.toml または railway.json に記述できます。インフラ変更を Pull Request ベースでレビュー・バージョン管理できるため、IaC (Infrastructure as Code) に近い運用が可能です。


1. 基本構造

最小構成は次の通りです。

# railway.toml
[services.web]
  root = "apps/web"
  buildCommand = "npm run build"
  startCommand = "npm run start"
 
[services.db]
  source = "postgres:16-alpine"
  volumes = ["/var/lib/postgresql/data"]

JSON 形式でも同様に記述できます。


2. ファイルの検出順序

Railway はデフォルトでリポジトリ直下にある railway.toml または railway.json を読み込みます。別名を使う場合は CLI で --config フラグを指定します。

railway up --config prod.toml

CI/CD で環境ごとに設定ファイルを切り替えたいときに便利です。


3. サポートされる設定項目

セクション キー 説明
[services.<name>] root サービスのルートディレクトリ
source Docker イメージ / Git リポジトリ
buildCommand ビルドコマンド
startCommand 起動コマンド
environment 環境変数のマップ
[volumes] size ボリュームサイズ (例: 1Gi)
[deploy] schedule Cron 形式の自動デプロイスケジュール

詳細は公式の JSON スキーマで確認できます。


4. カスタムファイル名の例

production.toml を用意し、本番環境のみ別ビルドコマンドを定義する例:

[services.web]
  buildCommand = "npm run build:prod"

デプロイ時は次のように実行します。

railway up --config production.toml

5. よくあるエラー

エラー 原因と対処
invalid type: string "1Gi" 数値フィールドに文字列を渡している。整数またはバイト指定に直す
service root not found root パスが存在しない。パスのスペルを確認

まとめ

Config as Code を使えば、GUI に頼る手作業を減らし、設定を Git で一元管理できます。小規模でも PR レビューの流れに乗せやすいので、まずは小さく始めてみてはいかがでしょうか。

Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)

リアルタイムアンケートツール: LiveQ

お悩み相談AIチャット: AI相談.com