NEWS DETAIL

Docker - 05 - Railway 部署

发布时间:2026/9/10 2:40:04 · 栏目:资讯中心

尧图网络原创建站知识分享正文
Railway 部署流程一、Railway 账号与项目1. 登录 Railway打开 https://railway.com用 GitHub 账号 登录后面要从 GitHub 拉代码建议直接用 GitHub 登录2. 新建 Project点 New Project选 Empty Project先空项目不要立刻 Deploy from GitHub给项目起名例如nodejs-study-api二、基础设施数据库与密钥3. 添加 PostgreSQL在项目里点 New → Database → Add PostgreSQL等状态变成 Active / Running点进 PostgreSQL 服务 → Variables或 Connect找到DATABASE_URL先复制保存到本地记事本后面 API 要用Railway 给的连接串类似postgresql://postgres:xxxxxxxx.railway.app:5432/railway内网 URL vs 公网 URL此处的DATABASE_URL是 Railway 项目内网地址供 API / Worker 等服务在 Railway 内互连使用。本地执行prisma migrate deploy无法直连内网需在第 13 步改用DATABASE_PUBLIC_URL公网代理地址。4. 添加 Redis回到 Project 画布再点 New → Database → Add Redis等 Active / Running点进 Redis → Variables复制REDIS_URL保存通常类似redis://default:xxxxxxxx.railway.app:63795. 生成 JWT_SECRET本地生成稍后写入 Railway在 PowerShell 执行[Convert]::ToBase64String((1..32|ForEach-Object{Get-Random-Maximum 256})-as[byte[]])把输出字符串保存好不要提交到 Git。三、代码准备推送仓库6. 修改 PORT 并推送须在连接 GitHub第 7 步之前完成以下修改并推送到仓库。将入口文件如index.ts中的constPORT8080;改为constPORTNumber(process.env.PORT)||8080;提交并推送。Railway 会为容器注入PORT服务需监听该端口才能正常对外提供服务。关于 PORT可选手动配置若在 Railway API 服务 Variables 中额外设置了PORTB服务会在 B 端口监听此时 Settings Networking 中的端口号也需设为 B外网请求才会转发到该端口。一般只需使用process.env.PORT无需手动设置变量。四、部署 API 服务7. 添加 GitHub回到 Project 画布点 New选 GitHub Repo若首次使用按提示授权 Railway 访问 GitHub选择仓库HideInTheWind/nodejs-study-api请替换为你自己的 GitHub 仓库Railway 会创建一个新服务可能叫 nodejs-study-api8. 仓库确认构建方式点进这个新服务 → Settings项值Root Directory留空项目根目录Builder应自动识别为 DockerfileStart Command留空用 Dockerfile 的 CMD [“npm”, “start”]9. 仓库配置环境变量Variables进入 API 服务的 Variables 标签添加 3 个变量变量名值怎么填DATABASE_URL引用 Postgres点 Add Variable Reference → 选 Postgres → DATABASE_URLREDIS_URL引用 RedisAdd Variable Reference → 选 Redis → REDIS_URLJWT_SECRET你第 5 步生成的随机串点 New Variable手动粘贴建议再加一个可选变量名值NODE_ENVproduction10. 触发部署保存变量后 Railway 会自动重新部署。也可到 Deployments 点 Deploy。等构建完成通常 2–5 分钟状态变为 ACTIVE。11. 生成公网域名进入 API 服务 → Settings → Networking点 Generate Domain会得到类似 nodejs-study-api-production-xxxx.up.railway.app 的地址。服务监听端口由第 6 步的process.env.PORT决定若手动设置了PORT变量Networking 端口需与之保持一致详见第 6 步说明。12. 验证本步只测 health浏览器或 PowerShell 访问curl https://你的域名.up.railway.app/health注意本步仅确认 API 进程已启动。/health通常不依赖数据库通过并不代表业务接口可用。完成第 13–15 步 Prisma 迁移后才能正常调用依赖数据库的接口。五、数据库迁移Prisma13. 拿到 Railway 公网库Railway → 点 Postgres 服务打开 Variables 或 Connect复制DATABASE_PUBLIC_URL或 Public Network URL与第 3 步的DATABASE_URL不同DATABASE_PUBLIC_URL带*.proxy.rlwy.net等公网代理供本地机器连入 Railway 上的 Postgres。API 服务在 Railway 内仍应引用内网DATABASE_URL不要混用。14. 临时设置环境变量不要写进 .env在项目根目录 PowerShell 执行把连接串换成你复制的DATABASE_PUBLIC_URL$env:DATABASE_URLpostgresql://postgres:你的密码xxxx.proxy.rlwy.net:端口/railwaynpx prisma migrate deploy15. 验证 migration 是否生效或者 postman 调接口npx prisma studio浏览器里应能看到 User、Todo、Product 等表。六、部署 Worker 服务16. 新建 Worker 服务Railway Project 画布 → New → GitHub Repo选同一个仓库HideInTheWind/nodejs-study-api请替换为你自己的 GitHub 仓库服务创建后点服务名 → Settings改名为 worker可选便于区分17. 配置构建方式Settings → Build与 API 相同配置项值BuilderDockerfileRoot Directory留空Dockerfile PathDockerfileSettings → Deploy配置项值Custom Start Commandnpm run worker:email这会覆盖 Dockerfile 里的 CMD [“npm”, “start”]容器启动后跑 Worker 而不是 API。18. 配置环境变量Variables 标签只需 1 个变量值REDIS_URLAdd Variable Reference → Redis → REDIS_URL当前项目的 email worker 只消费 Redis 队列配置REDIS_URL即可。若后续扩展为读库或接入真实邮件服务再按需补充相应环境变量。19. 部署保存后点 Deploy等状态 Success。打开 Deployments → View Logs应看到Email worker 已启动等待任务…20. 看 Worker 日志下单Railway → worker 服务 → Deployments → View Logs期望出现[Mock Email] 订单 #1 → worker-testexample.comuserId...七、后续维护与补充说明21. 后续修改代码后续修改代码直接提交到仓库即可会自动触发构建补充说明prisma migrate deploy会按prisma/migrations/里已有的 4 个 migration一次性建齐所有表生产环境专用不会交互提问。

本文为尧图网络原创建站知识分享。想针对自身行业获取定制化建站方案?欢迎咨询,资深顾问免费为你出思路。

RELATED

相关 资讯推荐

MORE

更多 新鲜资讯

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析
2026/9/9 21:11:14

JMeter入门实战:从零构建HTTP接口性能测试脚本与结果分析

1. 项目概述:从零开始,用JMeter搞定HTTP性能测试 刚接触性能测试的新手,或者是从功能测试转过来的朋友,一听到“压测”两个字,心里可能就有点发怵。工具那么多,概念那么杂,从哪儿下手呢&#xf…

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统
2026/9/9 11:02:40

Earendel: 一个纯TS写的POSIX兼容的微内核Web操作系统

最近我用TypeScript写了一个运行在浏览器里的Web操作系统 Earendel(目前已知的距离地球最遥远的恒星)。开发它的初衷主要是为了Linux和操作系统课程的教学。市面上绝大多数Web OS项目,要么只是做了一个长得像Windows/macOS的网页UI拼盘&#…

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]
2026/9/8 3:50:15

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形[特殊字符]

5分钟掌握Windows防撤回神器:让微信QQ撤回消息无处遁形🚀 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁(我已经看到了,撤回也没用了) 项目地址: http…

从零制作同人动画:技术路线、流程与实战避坑指南
2026/9/9 8:22:29

从零制作同人动画:技术路线、流程与实战避坑指南

1. 先搞清楚这个“粉丝动画”到底是什么,以及它能解决什么问题看到“五条悟VS宿傩/咒术回战粉丝动画”这个标题,很多人的第一反应可能是去找一个现成的视频。但如果你是一个想自己动手创作、或者想了解这类作品背后技术流程的创作者,这个标题…

闭源降价80%,开源却在涨价:AI定价的交叉路口
2026/9/8 3:41:16

闭源降价80%,开源却在涨价:AI定价的交叉路口

8月6日,两条价格曲线悄然交汇。 一条向下:OpenAI把GPT-5.6 Luna的输出价格从6美元砍到1.2美元/百万Token,降幅80%。另一条向上:同一天,DeepSeek公告全线涨价,措辞是"涨幅较大",非试探…

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买
2026/9/8 3:59:24

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买

产线三防平板选哪个牌子?5个品牌实测告诉你别瞎买经常有工厂朋友拿着网上的"三防平板十大品牌排行榜"来问我:到底选哪个?说实话排行榜看看就行,真正选型得看你产线什么场景。今天挑五个在产线数字化里用得比较多的品牌—…

看完这篇,还想了解更多?

预约尧图网络顾问一对一沟通,针对你的行业与现状给出建站建议,全程免费。

免费咨询