部署到 Railway
WARNING
永远使用 dockerfile 部署到 Railway,不要使用 Railway 的自动部署功能。
- dockerfile 的名称必须为
Dockerfile
,第一个字母大写,便于 Railway 自动发现 - 程序代码读取环境变量时,尊重 Railway 的环境变量
- 环境变量优先读取
RAILWAY_ENVIRONMENT_NAME
- 启动端口优先读取
PORT
而非手动指定
- 环境变量优先读取
- 在 Railway 中添加项目来部署,创建
development
和production
两种环境,绑定dev
和main
分支
bash
if [ -z "$RAILWAY_ENVIRONMENT_NAME" ]
then
if [ -z "$NODE_ENV" ]
then
export NODE_ENV=development
fi
else
export NODE_ENV=$RAILWAY_ENVIRONMENT_NAME
fi
ts
if (process.env["RAILWAY_ENVIRONMENT_NAME"]) {
console.log("使用Railway环境")
process.env["NODE_ENV"] = process.env["RAILWAY_ENVIRONMENT_NAME"]
}
可选的 Railway 配置文件
- 定义合适的 watchPatterns 来跳过不必要的重新打包
json
{
"$schema": "https://railway.app/railway.schema.json",
"build": {
"builder": "DOCKERFILE",
"watchPatterns": ["packages/service/**", "packages/web/**"]
}
}