Railway服务管理Skill railway-service

这个技能用于管理Railway云平台上的服务,包括检查服务状态、更新服务属性、创建服务等操作。关键词:Railway服务管理, Docker容器, 部署状态, GraphQL API, 云计算, DevOps。

DevOps 0 次安装 0 次浏览 更新于 3/20/2026

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。

流程:

  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 字段

字段 类型 描述
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镜像必须可访问(公开或带有注册表凭据)。