RailwayCLI管理技能Skill RailwayCLIManagement

Railway CLI 管理技能是用于通过命令行部署、管理和监控 Railway 云服务的工具,包括部署应用、查看日志、配置环境变量、扩展服务、管理数据库连接等 DevOps 操作,适用于云计算和 CI/CD 场景。关键词:Railway CLI、部署、管理、日志、环境变量、DevOps、云计算、CI/CD、微服务、命令行工具。

CI/CD 0 次安装 0 次浏览 更新于 3/8/2026

名称: Railway CLI 管理 描述: 部署、管理服务、查看日志和配置 Railway 基础设施。在部署到 Railway、管理环境变量、查看部署日志、扩展服务或管理卷时使用。

Railway CLI 管理

掌握 Railway CLI 进行部署、服务管理、日志查看和基础设施操作。

快速参考

部署

# 部署当前目录到链接的服务
railway up

# 部署时不附加日志
railway up --detach

# 部署到特定服务
railway up --service api

# 部署到特定环境
railway up --environment production

# 重新部署最新部署
railway redeploy

# 重新部署特定服务
railway redeploy --service worker

# 跳过确认
railway redeploy --yes

# 移除最近一次部署
railway down

# 移除特定服务的部署
railway down --service api

服务和项目管理

# 列出所有项目
railway list

# 链接到现有项目(交互式)
railway link

# 按 ID 链接到特定项目
railway link <project-id>

# 显示当前项目状态
railway status

# 以 JSON 格式获取状态(包含部署 ID!)
railway status --json

# 在浏览器中打开项目仪表板
railway open

# 取消当前目录与项目的链接
railway unlink

# 链接到特定服务
railway service <service-name-or-id>

# 向项目添加新服务
railway add

获取部署 ID

最佳方法:

# 获取包括部署 ID 的完整项目状态
railway status --json

# 使用 jq 提取特定部署 ID
railway status --json | jq -r '.services.edges[0].node.serviceInstances.edges[0].node.latestDeployment.id'

# 获取特定服务的部署 ID
railway status --json | jq -r '.services.edges[] | select(.node.name=="api") | .node.serviceInstances.edges[0].node.latestDeployment.id'

输出结构:

  • .services.edges[].node - 服务信息
  • .node.serviceInstances.edges[].node.latestDeployment.id - 最新部署 UUID
  • .node.serviceInstances.edges[].node.latestDeployment.meta - 提交信息、构建配置等

日志

查看日志

# 流式传输最新部署日志
railway logs

# 查看特定服务日志
railway logs --service api

# 查看特定环境日志
railway logs --environment production

# 查看部署日志(启动/运行时)
railway logs --deployment

# 查看构建日志
railway logs --build

# 按 ID 查看特定部署日志
railway logs <deployment-id>

# 获取特定服务的部署日志
railway logs --service worker --deployment

# 以 JSON 格式输出
railway logs --json

# 组合选项
railway logs --service api --deployment --json

日志提示:

  • 默认:显示最新部署日志
  • 部署日志:应用程序启动和运行时输出
  • 构建日志:编译、依赖、Nixpacks 输出
  • 使用 --jsonjq 进行过滤

环境变量

# 列出活动环境的所有变量
railway variables

# 列出特定服务变量
railway variables --service api

# 列出特定环境变量
railway variables --environment production

# 以 key=value 格式显示
railway variables --kv

# 以 JSON 格式输出
railway variables --json

# 设置变量
railway variables --set "DATABASE_URL=postgres://..."

# 设置多个变量
railway variables --set "NODE_ENV=production" --set "LOG_LEVEL=debug"

# 使用 Railway 变量运行本地命令
railway run npm start

# 打开加载了 Railway 变量的子shell
railway shell

环境

# 链接到环境(交互式)
railway environment

# 链接到特定环境
railway environment production

# 创建新环境
railway environment new

# 删除环境
railway environment delete <environment-name>

扩展

# 在链接环境中扩展服务
railway scale --us-west1 3

# 扩展特定服务
railway scale --service api --us-west1 2

# 跨多个区域扩展
railway scale --us-west1 2 --europe-west4 1

# 可用区域:
# --us-west1, --us-west2, --us-east4
# --europe-west4, --asia-southeast1

# 列出卷
railway volume list

# 列出特定服务卷
railway volume list --service api

# 添加新卷
railway volume add

# 删除卷
railway volume delete <volume-id>

# 更新卷
railway volume update <volume-id>

# 从服务分离卷
railway volume detach <volume-id>

# 将卷附加到服务
railway volume attach <volume-id>

数据库连接

# 连接到数据库 shell
railway connect

# 示例:
# - PostgreSQL:打开 psql
# - MongoDB:打开 mongosh
# - MySQL:打开 mysql
# - Redis:打开 redis-cli

认证

# 登录到 Railway 账户
railway login

# 注销
railway logout

# 检查当前用户
railway whoami

常见工作流程

初始项目设置

# 登录
railway login

# 链接到现有项目
railway link

# 或创建新项目
railway init

# 链接到服务
railway service api

# 链接到环境
railway environment production

# 检查状态
railway status

使用环境变量部署

# 设置变量
railway variables --set "NODE_ENV=production" --set "API_KEY=secret"

# 部署
railway up

# 监控日志
railway logs --deployment

调试失败的部署

# 获取部署 ID
DEPLOY_ID=$(railway status --json | jq -r '.services.edges[0].node.serviceInstances.edges[0].node.latestDeployment.id')

# 查看构建日志
railway logs $DEPLOY_ID --build

# 查看部署日志
railway logs $DEPLOY_ID --deployment

# 检查完整状态
railway status --json | jq '.services.edges[].node.serviceInstances.edges[].node.latestDeployment'

监控多个服务

# 终端 1:API 日志
railway logs --service api --deployment

# 终端 2:工作进程日志
railway logs --service worker --deployment

# 或使用 JSON + jq 过滤
railway logs --service api --json | jq 'select(.level == "error")'

提取部署信息

# 获取所有部署 ID
railway status --json | jq -r '.services.edges[].node | {service: .name, deployment: .serviceInstances.edges[0].node.latestDeployment.id}'

# 获取部署提交信息
railway status --json | jq -r '.services.edges[].node.serviceInstances.edges[].node.latestDeployment.meta | {commit: .commitHash, message: .commitMessage}'

# 获取服务 URL
railway status --json | jq -r '.services.edges[].node | select(.serviceInstances.edges[0].node.latestDeployment.canRedeploy == true)'

配置更改后重新部署

# 修改变量
railway variables --set "NEW_VAR=value"

# 重新部署以应用更改
railway redeploy --yes

# 或全新部署
railway up

使用 Railway 环境运行命令

# 运行迁移
railway run npm run migrate

# 运行种子脚本
railway run node scripts/seed.js

# 使用生产变量启动本地开发
railway run npm run dev

# 打开包含所有变量的 shell
railway shell

重要说明

部署目标

  • 生产:链接到生产环境
  • 预览:基于分支的部署(在 Railway 仪表板中配置)
  • 开发:本地使用 railway runrailway shell

JSON 输出

  • railway status --json 是最全面的命令
  • 包含:服务、部署 ID、提交信息、构建配置、服务实例
  • 使用 jq 进行解析和过滤

环境链接

  • 项目、服务和环境都单独链接
  • 使用 railway status 验证链接对象
  • 使用 railway servicerailway environmentrailway link 更改

日志行为

  • 默认:最新部署日志(5 分钟窗口)
  • 部署日志:应用程序输出(stdout/stderr)
  • 构建日志:Nixpacks、依赖、编译
  • JSON 输出:结构化日志便于解析

Railway.json 配置

  • 存储在项目根目录
  • 定义每个服务的构建/部署配置
  • 示例:
{
  "$schema": "https://railway.app/railway.schema.json",
  "build": {
    "builder": "NIXPACKS",
    "buildCommand": "pnpm install && pnpm run build"
  },
  "deploy": {
    "startCommand": "node dist/index.js",
    "healthcheckPath": "/health",
    "healthcheckTimeout": 100,
    "restartPolicyType": "ON_FAILURE",
    "restartPolicyMaxRetries": 10
  }
}

常见问题

  • 无 TTY 错误:命令需要交互输入(使用 JSON 输出或标志)
  • 服务未链接:先运行 railway service <service-name>
  • 环境未链接:先运行 railway environment <env-name>
  • 部署未找到:使用 railway status --json 验证部署 ID 存在

真实项目示例

Saturn 后端(API + 工作进程)

# 检查两个服务状态
railway status --json | jq '.services.edges[] | {
  service: .node.name,
  deployment: .node.serviceInstances.edges[0].node.latestDeployment.id,
  commit: .node.serviceInstances.edges[0].node.latestDeployment.meta.commitHash
}'

# 获取 API 部署日志
railway logs --service api --deployment

# 获取工作进程部署日志
railway logs --service worker --deployment

# 配置更改后重新部署两者
railway redeploy --service api --yes
railway redeploy --service worker --yes

调试生产问题

# 流式传输实时日志并错误过滤
railway logs --service api --deployment --json | jq 'select(.level == "error" or .level == "fatal")'

# 获取最近部署元数据
railway status --json | jq '.services.edges[] | select(.node.name == "api") | .node.serviceInstances.edges[0].node.latestDeployment.meta'

# 检查健康检查配置
railway status --json | jq '.services.edges[].node.serviceInstances.edges[].node.latestDeployment.meta.fileServiceManifest.deploy'