name: railway-service description: 检查服务状态、重命名服务、更改服务图标、链接服务或使用Docker镜像创建服务。对于使用本地代码创建服务,优先使用railway-new技能。对于GitHub仓库源,使用railway-new技能创建空服务,然后使用railway-environment技能配置源。 version: 1.0.0 author: Railway license: MIT tags: [Railway, Service, Status, Docker, Container, Infrastructure, Management] dependencies: [railway-cli] allowed-tools: Bash(railway:*)
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(包括动画GIFs) |
链接服务
切换当前目录的链接服务:
railway service link
或直接指定:
railway service link <service-name>
可组合性
- 使用本地代码创建服务:使用railway-new技能(处理脚手架+创建)
- 配置服务:使用railway-environment技能(变量、命令、镜像等)
- 删除服务:使用railway-environment技能设置
isDeleted: true - 应用更改:使用railway-environment技能
- 查看日志:使用railway-deployment技能
- 部署本地代码:使用railway-deploy技能
错误处理
没有服务链接
没有服务链接。运行`railway service link`以链接服务。
没有部署
服务存在但尚未有部署。使用`railway up`部署。
服务未找到
服务“foo”未找到。使用`railway status`检查可用服务。
项目未找到
用户可能未在链接项目中。检查railway status。
权限被拒绝
用户需要至少开发者角色来创建服务。
无效镜像
Docker镜像必须可访问(公开或带有注册表凭据)。