AIイノベーションズ
Railway/Guides

Config as Code を使う

Railway で TOML / JSON ファイルを利用してインフラ設定をコード管理する方法を解説します。カスタムファイル名や CLI での利用例も紹介。

著者: AIイノベーションズ 阿部隼也X / Twitter

Railwayはこちら

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ルートディレクトリ
sourceDocker イメージ / Git リポジトリ
buildCommandカスタムビルドコマンド
startCommandカスタムスタートコマンド
environment環境変数のマップ
[volumes]sizeボリュームサイズ (例: 1Gi)
[deploy]scheduleCron 形式の自動デプロイスケジュール

詳細なキーは公式 JSON スキーマで確認可能です。


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

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

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

デプロイ時:

railway up --config production.toml

5. よくあるエラー

エラー原因と対処
invalid type: string "1Gi"数値フィールドに文字列を渡した。値を整数かバイト単位に修正
service root not foundroot パスが存在しない。スペルミスに注意

まとめ

Config as Code を活用すると、GUI からの手動操作を減らし、インフラ設定を Git で一元管理できます。小規模プロジェクトでも PR レビューの恩恵を受けられるので、ぜひ採用してみてください。

Railwayはこちら

PR