SuperAPI AI 工具集

railway

部署与运维

查看项目

更新于 10-16 10:51

技能介绍

用途

Railway 技能用于在 railway.com 上部署和管理应用。当用户要求部署、托管或将应用发布到 Railway,或向 Railway 添加数据库、服务时使用。

CLI 基础

Railway CLI 为所有命令提供内置帮助:

railway --help
railway <command> --help

重要:CLI 具有在自动化环境中无法工作的交互式菜单。应始终显式提供所有必需参数以避免提示(例如 --workspace、--service、--name)。

常见命令

创建项目(始终指定 workspace 以避免提示):

railway init --name "my-project" --workspace "Workspace Name"

从模板部署(从 railway.com 上模板 URL 获取 ID):

railway init --template

添加 PostgreSQL 数据库:

railway add --database postgres

为应用添加空服务:

railway add --service api

将本地目录链接到服务:

railway service link api

设置环境变量(数据库 URL 使用引用):

railway variables --service api --set 'DATABASE_URL=${{Postgres.DATABASE_URL}}'

部署:

railway up

生成公开域名:

railway domain --service api

查看日志:

railway logs --service api
railway logs --service api --build    # build logs

SSH 进入运行中的服务:

railway ssh --service api

更多命令

以下命令较不常见但有用,运行 railway <command> --help 查看详情:

railway status --json          # 完整项目概览(服务、部署、域名)
railway metrics --service api  # CPU、内存、网络、磁盘使用情况
railway redeploy --service api # 重新部署最新部署
railway restart --service api  # 重启而不重新部署
railway down --service api     # 使服务下线

变量接线

使用 ${{ServiceName.VARIABLE}} 跨服务引用变量:

# 将数据库连接到应用
railway variables --service api --set 'DATABASE_URL=${{Postgres.DATABASE_URL}}'
railway variables --service api --set 'REDIS_URL=${{Redis.REDIS_URL}}'

# 将后端 URL 连接到前端
railway variables --service web --set 'API_URL=${{api.RAILWAY_PUBLIC_DOMAIN}}'

Railway 还提供内置变量:RAILWAY_PUBLIC_DOMAIN、RAILWAY_PRIVATE_DOMAIN、RAILWAY_PROJECT_ID、RAILWAY_ENVIRONMENT_NAME 等。

GraphQL API

对于 CLI 不可用的操作,Railway 提供 GraphQL API:

  • 端点:https://backboard.railway.com/graphql/v2
  • 认证令牌:~/.railway/config.json → user.token(用作 Bearer token)
  • API 文档:https://docs.railway.com/api/llms-docs.md

始终将应用绑定到 0.0.0.0:$PORT —— Railway 会注入 PORT 变量。

日志(Python)

Railway 解析 stdout 上的单行 JSON,按 level 字段着色,并可通过 Log Explorer 中的 @field:value 查询所有 JSON 字段。完整的设置指南、模式和陷阱见 logging-python.md。

适用场景

适用于需要将应用部署到 Railway 平台、管理 Railway 项目与服务、配置环境变量与数据库连接、查看部署日志与指标等场景。

限制

CLI 交互式菜单在自动化环境中不可用,需显式提供全部参数。CLI 未提供的操作需改用 GraphQL API。应用须绑定 0.0.0.0:$PORT。