Railway/Guides
Config as Code を使う
Railway で TOML / JSON ファイルを利用してインフラ設定をコード管理する方法を解説します。カスタムファイル名や CLI での利用例も紹介。
著者: AIイノベーションズ 阿部隼也(X / Twitter)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 レビューの恩恵を受けられるので、ぜひ採用してみてください。
PR