【Railway】Config as Code を使う
Railway で TOML / JSON ファイルを使ってインフラ設定をコードとして管理する方法を紹介します。カスタムファイル名や CLI での使い方も取り上げます。
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.tomlCI/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.toml5. よくあるエラー
| エラー | 原因と対処 |
|---|---|
invalid type: string "1Gi" |
数値フィールドに文字列を渡している。整数またはバイト指定に直す |
service root not found |
root パスが存在しない。パスのスペルを確認 |
まとめ
Config as Code を使えば、GUI に頼る手作業を減らし、設定を Git で一元管理できます。小規模でも PR レビューの流れに乗せやすいので、まずは小さく始めてみてはいかがでしょうか。
Railwayはこちら (←このリンクから登録すると20ドル分のクレジットがもらえます)