前置条件
- Next.js 14 项目(已配置
package.json和next.config.ts) - GitHub 仓库(Railway 从 GitHub 直接拉取)
- Railway 账号(免费账号每月有额度)
步骤一:准备项目
在项目根目录添加 Dockerfile(Railway 使用 Docker 部署):
Dockerfile
1FROM node:20-alpine AS base2 3FROM base AS deps4RUN apk add --no-cache libc6-compat5WORKDIR /app6COPY package.json package-lock.json* ./7RUN npm ci8 9FROM base AS builder10COPY --from=deps /app/node_modules ./node_modules11COPY . .12RUN npm run build13 14FROM base AS runner15ENV NODE_ENV=production16WORKDIR /app17COPY --from=builder /app/public ./public18COPY --from=builder /app/.next/standalone ./19COPY --from=builder /app/.next/static ./.next/static20EXPOSE 300021ENV PORT=300022CMD ["node", "server.js"]在 next.config.ts 中添加:
TypeScript
1output: "standalone",步骤二:推送到 GitHub
终端命令
1git init2git add .3git commit -m "add Dockerfile for Railway"4git branch -M main5git remote add origin https://github.com/你的用户名/你的仓库.git6git push -u origin main步骤三:在 Railway 创建项目
- 登录 railway.app
- 点击
New Project→Deploy from GitHub repo - 选择对应仓库
- Railway 会自动检测为 Node.js 项目
步骤四:配置环境变量
在 Railway 项目控制台点击 Variables,添加:
| 变量名 | 值 |
|---|---|
NODE_ENV | production |
NEXTAUTH_SECRET | 你的密钥(openssl rand -base64 32 生成) |
NEXTAUTH_URL | 你的域名(例:https://你的域名.com) |
如果是本地数据模式(JSON),无需数据库相关变量。
步骤五:部署与检查
- 点击
Deploy等待构建完成 - Railway 会自动分配一个
*.up.railway.app域名 - 点击生成的域名,检查网站是否正常加载
常见报错
| 报错 | 原因 | 解决方法 |
|---|---|---|
404 on static assets | next.config.ts 未设置 basePath | 检查是否需要配置 basePath |
| Build 失败 | Node 版本不兼容 | 在 package.json 指定 "engines": {"node": ">=20"} |
| 环境变量读取失败 | 变量名拼写错误 | Railway 会将 .env 文件名转为大写加下划线 |
相关资源
部署后如需自定义域名,在 Railway 项目 Settings → Networking → Custom Domains 中添加。配合使用 Next.js 建站项目模板,可省去手动配置 Dockerfile 的步骤。
更新记录
- 2026-05-06:首发
