railway-service について
railway-serviceは、CLIとGraphQL APIを使ってRailwayのサービスを管理するスキルです。デプロイ状況の確認、サービスの作成・更新、現在のディレクトリへのサービスのリンクを扱います。
主な機能
- 01サービスとデプロイ状況の確認
- 02GraphQLによるサービス作成
- 03サービス名とアイコンの更新
- 04ディレクトリへのサービスのリンク
- 05最近のデプロイ履歴の確認
活用シーン
- 01サービスのデプロイ済み状態の確認
- 02Dockerイメージからのサービス作成
- 03サービス名やアイコンの変更
- 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 フィールド
| フィールド | 型 | 説明 |
|---|---|---|
projectId | String! | プロジェクト ID(必須) |
name | String | サービス名(省略時は自動生成) |
source.image | String | Docker イメージ(例: nginx:latest) |
source.repo | String | GitHub リポジトリ(例: user/repo) |
branch | String | リポジトリソース用の Git ブランチ |
environmentId | String | 設定されており、フォークの場合は、その環境にのみ作成されます |
例: 空のサービスを作成
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 を使用してください。
手順:
- 空のサービスを作成:
serviceCreate(input: {projectId: "...", name: "my-service"}) - railway-environment スキルを使用して、ステージング済みの変更 API 経由でソースを設定
- 適用してデプロイをトリガー
作成後: インスタンスの設定
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 フィールド
| フィールド | 型 | 説明 |
|---|---|---|
name | String | サービス名 |
icon | String | 絵文字または画像 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 イメージにアクセス可能である必要があります(公開されているか、レジストリの認証情報が必要です)。