
Wasp 如何用 wasp deploy 一条命令在 Railway 启动部署并设置环境变量【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/waspWasp 提供单命令部署Wasp Deploy可以在一条命令里完成在 Railway 上创建服务、配置环境变量、构建并部署应用。对于wasp deploy railway launch project-name这条命令Wasp CLI 会设置好连接 client 与 server 所需的基础环境变量你只需要额外提供应用自己用到的变量例如 OAuth 密钥、自定义客户端变量。本文介绍从前置准备到首次部署、更新部署和验证结果的完整操作路径以及常见选项自定义 Postgres 镜像、自定义 server URL的用法。以下内容基于 Railway 部署文档、Wasp Deploy 概览、部署环境变量说明 和 CI/CD 部署文档。前置准备用 Wasp CLI 部署到 Railway 需要满足两个条件文档原文Prerequisites有一个 Railway 账号本机已安装railwayCLI。另外记住两条影响部署成败的限制项目名必须全局唯一。命令里的project-name例如my-wasp-app必须在你的所有 Railway 项目中唯一否则部署会失败这是 Wasp CLI 与 Railway 集成的已知限制。多组织时 CLI 会交互式提示选择组织。如果你在多个 Railway 组织里运行命令时会提示选择部署到哪个组织。一条命令启动部署launchwasp deploy railway launch my-wasp-applaunch是一个便捷命令等价于依次执行wasp deploy railway setup project-name wasp deploy railway deploy project-namesetup在 Railway 上创建 client、server 和数据库三个服务并配置环境变量。它不会部署 client 或 server 服务。setup每个应用只应运行一次CLI 在服务已存在时会跳过创建。deploy部署 client 和 server 应用之后每次想更新线上应用都用它。运行期间不要按 CTRL-C 或退出终端命令正在逐条执行。项目名会作为 Railway 上服务名的基础project-name-client例如my-wasp-app-clientproject-name-server例如my-wasp-app-server数据库服务固定命名为Postgres与项目名无关。可选参数复用已有项目与指定 workspace默认情况下 Wasp CLI 会创建一个名为project-name的新 Railway 项目。要部署到已存在的 Railway 项目用--existing-project-id传入该项目 IDwasp deploy railway launch my-wasp-app --existing-project-id railway-project-id默认情况下 CLI 会提示你选择 Railway workspace。想跳过提示直接用--workspace传入 workspace 的 id 或名称wasp deploy railway launch my-wasp-app --workspace railway-workspace-id-or-name设置环境变量launch运行后Wasp CLI 会自动设置好 server 应用的基础环境变量无需手动处理WASP_WEB_CLIENT_URL和WASP_SERVER_URL用于连接 client 与 serverDATABASE_URL用于连接 server 与数据库JWT_SECRET认证功能正常工作所必需。除此之外你自己应用的变量需要按下面两种方式提供。服务端变量--server-secret或 dashboard如果应用需要其他服务端环境变量例如社交登录的 OAuth 密钥在launch或setup命令里用--server-secret设置wasp deploy railway launch my-wasp-app --server-secret GOOGLE_CLIENT_ID... --server-secret GOOGLE_CLIENT_SECRET...其中...替换为你在 OAuth 提供方处申请到的 client ID 和 client secret。如果应用使用的是其他 OAuth 提供方变量名规则是PROVIDER_NAME_CLIENT_ID和PROVIDER_NAME_CLIENT_SECRET提供方大写名 后缀见 环境变量文档。应用部署之后还可以进入 Railway dashboard在 server 服务的Variables标签页里设置这些变量。客户端变量在终端会话中传入客户端环境变量REACT_APP_前缀在构建时注入到静态文件里所以不能在 Railway 上给 client 设置client 代码会忽略它们。正确做法是在运行部署命令的同一个终端会话里传入REACT_APP_ANOTHER_VARsomevalue wasp deploy railway launch my-wasp-app或者更新部署时REACT_APP_ANOTHER_VARsomevalue wasp deploy railway deploy project-name注意客户端变量在每一次部署时都要提供不只是第一次。文档给出的防遗忘做法是在项目package.json里加一个deploy脚本{ scripts: { deploy: REACT_APP_ANOTHER_VARsomevalue wasp deploy railway deploy } }之后用npm run deploy部署即可。客户端变量会在构建过程中被 Wasp 替换进静态文件因此不要在里面存放任何密钥。更新已部署的应用首次launch之后任何后续更新都只需deploy命令wasp deploy railway deploy project-name它接受两个可选参数--skip-client不部署 web client--skip-server不部署 serverdeploy会复用与 Wasp 项目目录已链接的 Railway 项目如果目录尚未链接 Railway 项目命令会失败并提示你先运行setup。在 CI 环境中部署时用--existing-project-id明确指定 Railway 项目 IDwasp deploy railway deploy project-name --existing-project-id railway-project-id可选分支自定义 Postgres 镜像与自定义 server URL自定义 PostgreSQL 数据库Wasp 默认用ghcr.io/railwayapp-templates/postgres-ssl:18镜像在 Railway 上创建 PostgreSQL 18 数据库与开发环境同版本默认镜像已包含 pgvector数据存储在 Railway 的 volume 中。如果应用需要其他 PostgreSQL 镜像例如要加 PostGIS用--db-image指定wasp deploy railway launch my-wasp-app --db-image postgis/postgis:18-3.6镜像只需在首次创建应用时指定一次。如果自定义镜像把数据放在其他路径用--db-volume-mount-path指定挂载路径默认值为/var/lib/postgresql/data。另注意Railway 的 Database View 对这些命令创建的数据库不可用需要连接生产数据库时用wasp db studio连接见 database 文档。自定义 server URL如果 client 需要连接不同的 server 地址例如 server 使用了自定义域名用--custom-server-urlwasp deploy railway launch my-wasp-app --custom-server-url https://api.myapp.comsetup和deploy命令同样支持该选项。部署完成后的检查在 Railway dashboard 中项目如my-wasp-app下应有project-name-client、project-name-server和Postgres三个服务应用部署后可通过服务分配到的地址访问。需要查看生产数据库时用wasp db studio连接文档见 database.md。如果要给应用配自定义域名在 client 服务的Settings→Custom Domain中填写域名和端口8080在域名服务商处加 CNAME 记录最后把新客户端 URL 设置为server 服务的WASP_WEB_CLIENT_URL变量避免 CORS 错误。详见 railway.md 的 Custom Domain 一节。限制与注意事项项目名在你的 Railway 账号内不唯一时部署直接失败这是当前 Wasp CLI 与 Railway 集成的已知限制重命名项目后重试。.env.client和.env.server文件在部署时会被忽略它们是开发环境专用的生产环境变量的提供方式就是上文介绍的--server-secret、终端会话变量和 dashboard 三种渠道部署环境变量文档。服务端缺少必需变量时 server 会启动失败使用 Wasp CLI 部署时基础配置类变量由 CLI 设置其余如 OAuth 密钥、自定义变量需要你自行设置。setup只运行一次重复执行时 CLI 会跳过已存在的服务。如果后续想在 CI/CD 中每次提交自动重部署前提是先在本机用wasp deploy railway launch完成首次部署然后在工作流中用wasp deploy railway deploy project-name --existing-project-id railway-project-id并配置RAILWAY_API_TOKEN仓库密钥见 CI/CD 部署文档。【免费下载链接】waspThe batteries-included full-stack framework for the AI era. Develop JS/TS web apps (React, Node.js, and Prisma) using declarative code that abstracts away complex full-stack features like auth, background jobs, RPC, email sending, end-to-end type safety, single-command deployment, and more.项目地址: https://gitcode.com/GitHub_Trending/wa/wasp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考