Skip to content

部署到 Railway

WARNING

永远使用 dockerfile 部署到 Railway,不要使用 Railway 的自动部署功能。

  1. dockerfile 的名称必须为 Dockerfile,第一个字母大写,便于 Railway 自动发现
  2. 程序代码读取环境变量时,尊重 Railway 的环境变量
    1. 环境变量优先读取 RAILWAY_ENVIRONMENT_NAME
    2. 启动端口优先读取 PORT 而非手动指定
  3. 在 Railway 中添加项目来部署,创建 developmentproduction 两种环境,绑定 devmain 分支
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 配置文件

  1. 定义合适的 watchPatterns 来跳过不必要的重新打包
json
{
  "$schema": "https://railway.app/railway.schema.json",
  "build": {
    "builder": "DOCKERFILE",
    "watchPatterns": ["packages/service/**", "packages/web/**"]
  }
}