用途:把 genesis 单仓项目部署到 Railway。期望结构为 services/<app>-server(带 Dockerfile 和 /health 的 Go API)、services/<app>-web(nginx 托管的 React 应用,带 Dockerfile)以及 Postgres。目标拓扑:Postgres、<app>-server、<app>-web,web 通过私有网络访问 server,server 访问 Postgres。
前提:需要 Railway MCP 服务器(mcp__railway__* 工具);若不可用应停止并告知用户,不要改用猜测的 CLI 命令。Railway CLI(npm i -g @railway/cli 或 brew install railway)仅用于 railway login、railway init、railway add、railway link 及读取已解析变量。
规则:所有 Railway 变更走 MCP 工具;不要添加 railway.json / railway.toml(配置即代码已弃用,2026-12-01 停止工作)。按依赖顺序创建服务:Postgres、server、web,因为 ${{Service.VAR}} 引用在被引用服务存在前为空。创建前先在 cmd/<app>/main.go 中查找会 os.Exit 的配置检查,配置键映射到环境变量时 . 变 _(http.port → HTTP_PORT)。使用 Railway Postgres 模板;仅当迁移执行 CREATE EXTENSION postgis 时才改用 postgis/postgis 镜像服务。先解析项目与环境 ID。
步骤:用 railway add --database postgres 创建 Postgres,再 create-service 创建 server 和 web;用 set-variables(skipDeploys: true)设置变量,server 需 PORT=8080、HTTP_PORT=${{PORT}}、DB_URL=${{Postgres.DATABASE_URL}}?sslmode=disable、LOG_LEVEL=info,web 需 BACKEND_URL=http://${{<app>-server.RAILWAY_PRIVATE_DOMAIN}}:8080;用 update-service 设置 rootDirectory、dockerfilePath、watchPatterns、重启策略,server 另设 healthcheckPath: /health 与 healthcheckTimeout: 60;用 get-service-config 和 list-variables 回读确认;随后 connect-service-source 连接仓库与 main 分支;generate-domain 为 web 生成域名;最后在子目录中 railway link。
验证:轮询 list-deployments 直到 SUCCESS,失败时取 get-logs 报告原因;curl --fail --max-time 10 https://<web domain>/health 须返回预期健康响应。常见错误包括只设 PORT 未设 HTTP_PORT、postgis 镜像未设 PGDATA、在变量和设置前连接源码、该用模板却用普通镜像、使用占位符 project-00。资料未提供收费、价格或平台支持范围等信息。