教程 搜索 / 发布与基础设施 / 部署到 Railway
📝 文字 ● 初级 更新于 2026-05-13

如何在 LingCode 中部署到 Railway?

TL;DR:推送代码到 GitHub,在 railway.app 上连接仓库,Railway 会自动检测你的技术栈并开始构建。如果想通过 LingCode 一键部署,只需将 Railway 令牌填入 Magic Deploy → Railway 并点击"Ship"即可。大多数技术栈无需 Dockerfile。

Railway 就是把 Heroku 的简洁性加上实时日志、2020 年代的定价透明度,并且不让用户去写 Dockerfile 的产物。指向一个 GitHub 仓库,三十秒后你的应用就以真实 URL 上线了。

早期 Heroku 的魔力在于你完全不需要思考。git push heroku main,dyno 启动,URL 生效,几分钟内你就能专注于真正要解决的问题,而不是花几个小时折腾部署。后来 Heroku 变贵了,取消了免费层,多年停滞不前。市场注意到了,一批替代品随之涌现。其中,Railway 最干净地重现了"那种魔力",同时解决了 Heroku 留下的问题。

Railway 的卖点是:连接一个 GitHub 仓库,它会检测项目类型(Node、Python、Go、Ruby、Rust 等),自动完成构建,部署上线,你就得到了一个 URL。整个流程只需十五秒的界面操作加上构建时间。如果应用需要数据库,从侧边栏添加 Postgres 或 Redis 即可,连接字符串会自动作为环境变量注入。如果需要后台 Worker,再添加一个服务就行。它的心智模型是"一个项目就是一组共享环境变量和私有网络的服务集合"——这和真实应用的架构高度吻合,还不用去写 yaml 文件。

代价是平台的强主张。Railway 会选择构建路径,你可以覆盖,但这样做会有一种"逆着平台走"的感觉。定价按用量计费(按 CPU 时间和内存时间收费,而非固定月费),用量低时非常划算,用量高时可能出现意外费用。对于大多数独立项目和小型业务来说,Railway 是通往"像生产环境一样的基础设施"最经济的路径。但对于有特殊需求的企业工作负载,这种强主张就会成为阻碍。

你将学到什么

第 1 步:注册并连接 GitHub

1

一步 OAuth 授权

用 GitHub 账号在 railway.com 注册。Railway 会申请读取你仓库的权限——如果不想授权所有仓库,可以只选特定仓库。免费试用提供 $5 的使用额度,之后可以选择合适的套餐。

Railway 的定价在 2023 年有所调整——旧意义上的免费层已不存在,但 $5/月的 Hobby 套餐是实打实的,$5 额度足够测试好几个小时。

第 2 步:从 GitHub 仓库新建项目

2

首次部署流程

点击 New ProjectDeploy from GitHub repo,选择仓库和分支(默认为 main)。Railway 扫描仓库后自动检测技术栈(例如"这是一个 Next.js 应用"),并开始构建。

30 到 90 秒内,首次部署就会上线。Railway 会生成一个类似 my-app-production.up.railway.app 的公开 URL,默认启用 HTTPS。点击它,你的应用应该就能正常加载。

如果检测选择了错误的构建路径,你可以在项目根目录添加 railway.toml,或在服务设置中手动指定启动命令。对于常见技术栈,检测通常是正确的;Monorepo 或非常规结构可能需要手动覆盖。

第 3 步:添加数据库

3

在项目画布上右键

在 Railway 项目视图中,点击空白区域并选择 Add Service → Database,然后选择 Postgres、MySQL、MongoDB 或 Redis。

Railway 在几秒内完成数据库的创建,并在项目的私有网络中将连接字符串以环境变量的形式暴露——你的应用服务会自动获得 DATABASE_URL,无需手动设置。该数据库仅限项目内部访问,公网无法直接连接。

第 4 步:环境变量

4

按服务设置,支持引用语法共享

在服务的 Variables 标签页中设置应用所需的环境变量(SECRET_KEY、第三方 API 密钥等)。有两种常用模式值得了解:

  • 引用另一个服务的变量:${{ Postgres.DATABASE_URL }} 可以将数据库连接字符串导入应用的环境变量,而无需复制值本身。
  • 跨服务共享变量:在项目级别设置,然后从各服务中引用。

变量在存储时会加密,控制台默认以遮码方式显示。

第 5 步:自定义域名

5

服务设置 → Networking → Custom Domain

点击你的服务,进入 Settings → Networking,点击 Custom Domain,输入你的域名。Railway 会显示一个 CNAME 目标(类似 your-app.up.railway.app),你需要将 DNS 指向它。

在你的 DNS 服务商处,为子域名添加指向该目标的 CNAME 记录。对于裸域名,Railway 在支持 ALIAS / 扁平化 CNAME 的服务商(Cloudflare、Route 53 等)上可以正常工作。几分钟内 Railway 会自动签发 TLS 证书。

第 6 步:生产环境规范

6

两套环境,支持晋级发布

正式项目需要一个预发布环境,在正式上线前进行测试。在 Railway 中,点击 Environments → New Environment,从生产环境复制一份。Railway 会建立一个独立的副本,拥有自己的 URL 和(克隆的)数据库。你可以将代码推送到预发布环境的分支;准备好后再晋级到生产环境。

这正是 Railway 弥补了 Heroku 一直没做好的地方——一个真正的双环境工作流,不需要再学一套新工具。

第 7 步:关于定价

7

按用量计费;设定消费上限

Railway 按 CPU 时间、内存时间、出站流量和数据库存储收费,按服务计算。Hobby 套餐($5/月)上一个小的低负载应用通常没问题;但如果应用有峰值(长时间运行的定时任务、大型容器构建、大量带宽),费用可能会上涨。

在账户设置中设置用量上限——当你达到上限时,Railway 会关闭服务,而不是让账单无限增长。这是最重要的一项配置,第一天就应该完成。

低价套餐确实存在冷启动问题。Railway 在较低层级可能会让闲置服务进入休眠。如果你的应用需要在每次请求时唤醒,预计会有 1 到 3 秒的冷启动延迟。对于面向用户的应用,建议保持服务常驻(通过最小副本数设置)或升级到更高层级。

第 8 步:Railway 不适合的场景

8

三种情况

  • 需要多地域部署。Railway 运行在固定区域,无法选择每个服务的部署位置。对于全球性应用,Fly.io 是更好的选择。
  • 需要固定月费。按用量计费意味着不确定性。Render 的固定套餐更加可预测。
  • 需要真正的 root / 内核级控制。Railway 将这些抽象掉了。如果需要自定义 init 的 Docker 或 systemd,请使用真正的 VPS。

下一步