Railway 部署
HaloLight Railway 部署版本,针对 Railway 平台优化的一键部署方案。
在线预览:https://halolight-railway.h7ml.cn
GitHub:https://github.com/halolight/halolight-railway
特性
- 🚂 一键部署 - 模板化快速部署,30 秒上线
- 📈 自动扩缩容 - 按需自动扩展,零停机部署
- 🐘 PostgreSQL - 一键添加托管数据库
- 🔴 Redis - 内置缓存服务支持
- 🌐 自定义域名 - 免费 HTTPS,自动续期
- ⚙️ 环境变量 - 便捷的配置管理,支持引用
- 📊 监控面板 - 实时资源监控,日志聚合
- 🔄 自动部署 - Git push 触发自动部署
快速开始
方式一:一键部署 (推荐)
点击按钮后:
- 登录 Railway 账号
- 选择 GitHub 仓库
- 配置环境变量
- 自动部署完成
方式二:CLI 部署
bash
# 安装 Railway CLI
npm install -g @railway/cli
# 登录 Railway
railway login
# 克隆项目
git clone https://github.com/halolight/halolight-railway.git
cd halolight-railway
# 初始化 Railway 项目
railway init
# 关联到已有项目 (可选)
railway link
# 部署
railway up方式三:GitHub 集成
- Fork halolight-railway 仓库
- 在 Railway 控制台选择 “Deploy from GitHub repo”
- 选择你的 Fork 仓库
- 配置环境变量并部署
配置文件
railway.json
json
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "NIXPACKS",
"buildCommand": "pnpm install && pnpm build"
},
"deploy": {
"startCommand": "pnpm start",
"healthcheckPath": "/api/health",
"healthcheckTimeout": 300,
"restartPolicyType": "ON_FAILURE",
"restartPolicyMaxRetries": 10,
"numReplicas": 1
}
}nixpacks.toml (可选)
toml
[phases.setup]
nixPkgs = ["nodejs_20", "pnpm"]
[phases.install]
cmds = ["pnpm install --frozen-lockfile"]
[phases.build]
cmds = ["pnpm build"]
[start]
cmd = "pnpm start"环境变量
应用配置
| 变量名 | 说明 | 示例 |
|---|---|---|
NODE_ENV | 运行环境 | production |
PORT | 服务端口 | 3000 (Railway 自动设置) |
NEXT_PUBLIC_API_URL | API 基础 URL | /api |
NEXT_PUBLIC_MOCK | 启用 Mock 数据 | false |
NEXT_PUBLIC_APP_TITLE | 应用标题 | Admin Pro |
Railway 变量引用
Railway 支持在环境变量中引用其他服务:
bash
# 引用自动生成的域名
NEXT_PUBLIC_API_URL=https://${{RAILWAY_PUBLIC_DOMAIN}}/api
# 引用 PostgreSQL 服务
DATABASE_URL=${{Postgres.DATABASE_URL}}
# 引用 Redis 服务
REDIS_URL=${{Redis.REDIS_URL}}
# 引用项目变量
JWT_SECRET=${{shared.JWT_SECRET}}添加服务
PostgreSQL 数据库
bash
# CLI 方式
railway add --database postgres
# 或在控制台
# 1. 点击 "New Service"
# 2. 选择 "Database" → "PostgreSQL"
# 3. 自动生成 DATABASE_URL生成的环境变量:
DATABASE_URL- 完整连接字符串PGHOST- 主机地址PGPORT- 端口PGUSER- 用户名PGPASSWORD- 密码PGDATABASE- 数据库名
Redis 缓存
bash
# CLI 方式
railway add --database redis
# 或在控制台
# 1. 点击 "New Service"
# 2. 选择 "Database" → "Redis"
# 3. 自动生成 REDIS_URL生成的环境变量:
REDIS_URL- 完整连接字符串REDISHOST- 主机地址REDISPORT- 端口REDISPASSWORD- 密码
自定义域名
添加域名
- 在服务设置中点击 “Settings”
- 找到 “Domains” 部分
- 点击 “Generate Domain” (免费 Railway 域名)
- 或点击 “Add Custom Domain” (自定义域名)
DNS 配置
类型: CNAME
名称: your-subdomain
值: <your-app>.up.railway.appHTTPS
Railway 自动为所有域名配置 HTTPS:
- 自动申请 Let's Encrypt 证书
- 自动续期
- 强制 HTTPS 重定向
常用命令
bash
# 登录
railway login
# 查看状态
railway status
# 部署
railway up
# 查看日志
railway logs
# 打开控制台
railway open
# 运行远程命令
railway run <command>
# 连接数据库
railway connect postgres
# 环境变量
railway variables
railway variables set KEY=value监控与日志
实时日志
bash
# CLI 查看日志
railway logs -f
# 或在控制台
# Service → Deployments → 点击部署 → View Logs资源监控
Railway 控制台提供:
- CPU 使用率
- 内存使用量
- 网络流量
- 请求数/响应时间
- 错误率
告警设置
- 进入项目设置
- 配置 Webhook 通知
- 支持 Slack、Discord、Email
扩缩容
手动扩容
json
// railway.json
{
"deploy": {
"numReplicas": 3
}
}自动扩容 (Pro 计划)
Railway Pro 支持基于指标的自动扩容:
- CPU 阈值
- 内存阈值
- 请求队列深度
费用说明
| 计划 | 价格 | 特性 |
|---|---|---|
| Hobby | $5/月 | 500 小时执行时间,1GB 内存 |
| Pro | $20/月起 | 无限执行时间,更多资源 |
| Enterprise | 联系销售 | 专属支持,SLA 保障 |
常见问题
Q:部署失败怎么办?
A:检查以下几点:
- 查看构建日志,确认依赖安装正确
- 确认
pnpm-lock.yaml已提交 - 检查环境变量是否配置正确
- 确认
start命令正确
Q:如何回滚部署?
A:在 Deployments 页面:
- 找到之前的成功部署
- 点击 “Redeploy”
- 或使用 CLI:
railway rollback
Q:如何配置私有网络?
A:Railway 服务间通过内部网络通信:
bash
# 使用内部 DNS
DATABASE_URL=postgres://user:pass@postgres.railway.internal:5432/db与其他平台对比
| 特性 | Railway | Vercel | Fly.io |
|---|---|---|---|
| 一键部署 | ✅ | ✅ | ⚠️ 需 CLI |
| 托管数据库 | ✅ 内置 | ❌ 需外部 | ✅ 内置 |
| 免费额度 | $5/月信用 | 100GB | 3 个共享 VM |
| 自动扩容 | ✅ Pro | ✅ | ✅ |
| 私有网络 | ✅ | ⚠️ 有限 | ✅ |