service について
Railway サービスを管理するスキルです。デプロイ状況の確認、サービス情報の更新やリンク変更に加え、API 経由で Docker イメージからサービスを作成できます。
主な機能
- 01サービス状態とデプロイ履歴の確認
- 02サービス名とアイコンの更新
- 03ディレクトリにリンクするサービスの変更
- 04GraphQL によるイメージサービスの作成
活用シーン
- 01デプロイの完了や進行状況の確認
- 02サービス名やアイコンの変更
- 03ディレクトリを別サービスにリンク
- 04Docker イメージからサービスを作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ railwayapp/ railway-skills --skill serviceインストール後、Claude Code で/serviceを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/environment-config.mdmonorepo.mdrailpack.mdvariables.mdscripts/railway-api.sh詳細
サービス管理
ステータスの確認、プロパティの更新、高度なサービス作成を行います。
使用するタイミング
- サービスのステータス、ヘルス、デプロイについて質問された場合
- 「サービスはデプロイされていますか?」と質問された場合
- サービス名の変更やサービスアイコンの変更を希望する場合
- 別のサービスへのリンクを希望する場合
- Docker イメージを新しいサービスとしてデプロイする場合(高度な操作)
注記: ローカルコードを使ってサービスを作成する場合(一般的なケース)は、プロジェクトのセットアップ、スキャフォールディング、サービスの作成をまとめて処理する new スキルを優先してください。
GitHub リポジトリをソースにする場合: new スキルで空のサービスを作成し、その後 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'
scripts/railway-api.sh \
'mutation createService($input: ServiceCreateInput!) {
serviceCreate(input: $input) { id name }
}' \
'{"input": {"projectId": "PROJECT_ID"}}'
SCRIPT
例:イメージを指定してサービスを作成する
bash <<'SCRIPT'
scripts/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 リポジトリを接続する
source.repo を指定して serviceCreate を使用しないでください。代わりにステージング変更 API を使用してください。
手順:
- 空のサービスを作成します:
serviceCreate(input: {projectId: "...", name: "my-service"}) environmentスキルを使って、ステージング変更 API 経由でソースを設定します- 適用してデプロイを開始します
作成後:インスタンスを設定する
environment スキルを使ってサービスインスタンスを設定します:
{
"services": {
"<serviceId>": {
"isCreated": true,
"source": { "image": "nginx:latest" },
"variables": {
"PORT": { "value": "8080" }
}
}
}
}
重要: 新しいサービスインスタンスには、必ず isCreated: true を含めてください。
その後、environment スキルを使って適用し、デプロイします。
変数の参照については、reference/variables.md を参照してください。
サービスのステータスを確認する
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'
scripts/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'
scripts/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>
組み合わせ
- ローカルコードでサービスを作成する:
newスキルを使用します(スキャフォールディングと作成を処理します) - サービスを設定する:
environmentスキルを使用します(変数、コマンド、イメージなど) - サービスを削除する:
isDeleted: trueを指定してenvironmentスキルを使用します - 変更を適用する:
environmentスキルを使用します - ログを表示する:
deploymentスキルを使用します - ローカルコードをデプロイする:
deployスキルを使用します
エラー処理
サービスがリンクされていない
No service linked. Run `railway service link` to link a service.
デプロイがない
Service exists but has no deployments yet. Deploy with `railway up`.
サービスが見つからない
Service "foo" not found. Check available services with `railway status`.
プロジェクトが見つからない
ユーザーがリンク済みプロジェクトに所属していない可能性があります。railway status を確認してください。
アクセスが拒否された
サービスを作成するには、ユーザーに少なくとも DEVELOPER ロールが必要です。
無効なイメージ
Docker イメージにはアクセスできる必要があります(公開されているか、レジストリの認証情報が必要です)。