mcpField
R
railway-service

railway-service

github.com/davila7クラウド・DevOps33.0k281 回インストール1 日前に更新
リポジトリ

railway-service について

railway-serviceは、CLIとGraphQL APIを使ってRailwayのサービスを管理するスキルです。デプロイ状況の確認、サービスの作成・更新、現在のディレクトリへのサービスのリンクを扱います。

主な機能

  1. 01サービスとデプロイ状況の確認
  2. 02GraphQLによるサービス作成
  3. 03サービス名とアイコンの更新
  4. 04ディレクトリへのサービスのリンク
  5. 05最近のデプロイ履歴の確認

活用シーン

  1. 01サービスのデプロイ済み状態の確認
  2. 02Dockerイメージからのサービス作成
  3. 03サービス名やアイコンの変更
  4. 04ディレクトリにリンクするサービスの切り替え

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davila7/claude-code-templates --skill railway-service

インストール後、Claude Code で/railway-serviceを入力して読み込まれたか確認します。

詳細

Railway サービス管理

ステータスの確認、プロパティの更新、高度なサービス作成を行います。

使用するタイミング

  • ユーザーがサービスのステータス、ヘルス、またはデプロイについて尋ねたとき
  • ユーザーが「サービスはデプロイされていますか?」と尋ねたとき
  • ユーザーがサービス名の変更またはサービスアイコンの変更を希望するとき
  • ユーザーが別のサービスをリンクしたいとき
  • ユーザーが Docker イメージを新しいサービスとしてデプロイしたいとき(高度な操作)

注意: ローカルコードでサービスを作成する一般的なケースでは、プロジェクトのセットアップ、スキャフォールディング、サービス作成をまとめて処理する railway-new スキルの使用を推奨します。

GitHub リポジトリをソースとする場合: railway-new スキルで空のサービスを作成し、その後 railway-environment スキルを使用して、ステージング済みの変更 API 経由で source.repo を設定してください。

サービスの作成

GraphQL API 経由で新しいサービスを作成します。これに対応する CLI コマンドはありません。

コンテキストの取得
railway status --json

以下を抽出します:

  • project.id - サービスを作成するため
  • environment.id - インスタンス設定をステージングするため
サービス作成ミューテーション
mutation serviceCreate($input: ServiceCreateInput!) {
  serviceCreate(input: $input) {
    id
    name
  }
}
ServiceCreateInput フィールド
フィールド型説明
projectIdString!プロジェクト ID(必須)
nameStringサービス名(省略時は自動生成)
source.imageStringDocker イメージ(例: nginx:latest)
source.repoStringGitHub リポジトリ(例: user/repo)
branchStringリポジトリソース用の Git ブランチ
environmentIdString設定されており、フォークの場合は、その環境にのみ作成されます
例: 空のサービスを作成
bash <<'SCRIPT'
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \
  'mutation createService($input: ServiceCreateInput!) {
    serviceCreate(input: $input) { id name }
  }' \
  '{"input": {"projectId": "PROJECT_ID"}}'
SCRIPT
例: イメージを指定してサービスを作成
bash <<'SCRIPT'
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \
  'mutation createService($input: ServiceCreateInput!) {
    serviceCreate(input: $input) { id name }
  }' \
  '{"input": {"projectId": "PROJECT_ID", "name": "my-service", "source": {"image": "nginx:latest"}}}'
SCRIPT
GitHub リポジトリの接続

serviceCreate で source.repo を使用しないでください。 代わりにステージング済みの変更 API を使用してください。

手順:

  1. 空のサービスを作成: serviceCreate(input: {projectId: "...", name: "my-service"})
  2. railway-environment スキルを使用して、ステージング済みの変更 API 経由でソースを設定
  3. 適用してデプロイをトリガー
作成後: インスタンスの設定

railway-environment スキルを使用してサービスインスタンスを設定します:

{
  "services": {
    "<serviceId>": {
      "isCreated": true,
      "source": { "image": "nginx:latest" },
      "variables": {
        "PORT": { "value": "8080" }
      }
    }
  }
}

重要: 新しいサービスインスタンスには、必ず isCreated: true を含めてください。

その後、railway-environment スキルを使用して適用し、デプロイします。

サービスステータスの確認

railway service status --json

リンクされているサービスの現在のデプロイステータスを返します。

デプロイ履歴
railway deployment list --json --limit 5
ステータスの表示

以下を表示します:

  • サービス: 名前と現在のステータス
  • 最新のデプロイ: ステータス(SUCCESS、FAILED、DEPLOYING、CRASHED など)
  • デプロイ日時: 現在のデプロイが公開された日時
  • 最近のデプロイ: 直近 3~5 件のステータスとタイムスタンプ
デプロイステータス
ステータス意味
SUCCESSデプロイ済みで実行中
FAILEDビルドまたはデプロイに失敗
DEPLOYINGデプロイ中
BUILDINGビルド中
CRASHEDランタイムクラッシュ
REMOVEDデプロイが削除された

サービスの更新

GraphQL API 経由でサービス名またはアイコンを更新します。

サービス ID の取得
railway status --json

レスポンスから service.id を抽出します。

名前の更新
bash <<'SCRIPT'
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \
  'mutation updateService($id: String!, $input: ServiceUpdateInput!) {
    serviceUpdate(id: $id, input: $input) { id name }
  }' \
  '{"id": "SERVICE_ID", "input": {"name": "new-name"}}'
SCRIPT
アイコンの更新

アイコンには画像 URL またはアニメーション GIF を指定できます。

種類例
画像 URL"icon": "https://example.com/logo.png"
アニメーション GIF"icon": "https://example.com/animated.gif"
Devicons"icon": "https://devicons.railway.app/github"

Railway Devicons: 一般的な開発者向けアイコンは https://devicons.railway.app/{query} にクエリを送信して取得できます(例: github、postgres、redis、nodejs)。すべてのアイコンは https://devicons.railway.app で閲覧できます。

bash <<'SCRIPT'
${CLAUDE_PLUGIN_ROOT}/skills/lib/railway-api.sh \
  'mutation updateService($id: String!, $input: ServiceUpdateInput!) {
    serviceUpdate(id: $id, input: $input) { id icon }
  }' \
  '{"id": "SERVICE_ID", "input": {"icon": "https://devicons.railway.app/github"}}'
SCRIPT
ServiceUpdateInput フィールド
フィールド型説明
nameStringサービス名
iconString絵文字または画像 URL(アニメーション GIF を含む)

サービスのリンク

現在のディレクトリでリンクするサービスを切り替えます:

railway service link

または直接指定します:

railway service link <service-name>

Composability

  • ローカルコードでサービスを作成: railway-new スキルを使用(スキャフォールディングと作成の両方を処理)
  • サービスを設定: railway-environment スキルを使用(変数、コマンド、イメージなど)
  • サービスを削除: isDeleted: true を指定して railway-environment スキルを使用
  • 変更を適用: railway-environment スキルを使用
  • ログを表示: railway-deployment スキルを使用
  • ローカルコードをデプロイ: railway-deploy スキルを使用

Error Handling

No Service Linked
No service linked. Run `railway service link` to link a service.
No Deployments
Service exists but has no deployments yet. Deploy with `railway up`.
Service Not Found
Service "foo" not found. Check available services with `railway status`.
Project Not Found

ユーザーがリンクされたプロジェクトに所属していない可能性があります。railway status で確認してください。

Permission Denied

サービスを作成するには、少なくとも DEVELOPER ロールが必要です。

Invalid Image

Docker イメージにアクセス可能である必要があります(公開されているか、レジストリの認証情報が必要です)。

コメント