资讯详情

资讯详情

Wasp 如何用 wasp deploy 一条命令在 Fly.io 部署客户端、服务端与数据库三个应用

Wasp 如何用 wasp deploy 一条命令在 Fly.io 部署客户端、服务端与数据库三个应用【免费下载链接】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你在本地用 Wasp 开发完应用后需要把整个应用部署到公网。Wasp CLI 提供wasp deploy fly launch一条命令在 Fly.io 上自动完成注册客户端与服务端应用、创建数据库、构建并发布的全过程不需要手动配置三个应用之间的连接。执行成功后你的 Fly 账号下会出现三个独立应用客户端、服务端、数据库全部上线。适用前提Fly.io 账号、flyCLI、Wasp CLI以及一个已在本地开发好的 Wasp 项目。Wasp 应用由三个独立部署的部分组成根据 Wasp 部署文档一个 Wasp 应用构建后会分成三个部分各自独立部署客户端client基于 React 的单页应用通常作为静态文件托管服务端server基于 Node.js 的 Express 后端负责处理请求并访问数据库数据库databaseWasp 使用 PostgreSQL 作为生产数据库。客户端和服务端是两个通过 HTTP 通信的独立应用所以部署到 Fly.io 时就是三个应用Wasp 会用你指定的应用基础名basename加上后缀创建它们。部署文档见 Fly.io 部署指南。部署前需要准备什么以下三项来自 Fly.io 部署文档的 Prerequisites 部分创建 Fly.io 账号在 Fly 中添加支付方式——Fly 要求账号部署超过两个应用之前必须绑定支付方式而部署一个 Wasp 应用正好需要三个 Fly 应用client、server、database所以这一步必须完成在本地机器上安装flyCLI。另外确认 Wasp CLI 可用部署命令都以wasp deploy fly开头。CI/CD 文档中给出的安装方式是npm i -g wasp.sh/wasp-cli$WASP_VERSION见 CI/CD 部署文档$WASP_VERSION是流程中固定下来的 Wasp 版本号本地使用同理安装即可。执行一条命令完成部署在 Wasp 项目根目录运行wasp deploy fly launch my-wasp-app dfw其中my-wasp-app是应用基础名dfw是 Fly.io 区域代码dfw代表美国得州 Dallas两者都要替换为你自己的值。命令执行期间不要按 CTRL-C 或退出终端。两个必须注意的约束应用基础名在整个 Fly 平台上必须唯一否则部署会失败如果你的 Fly 账号属于多个 organization需要追加--org org-slug参数指定在哪个组织下执行。可用fly orgs list查看组织名称slug例如wasp deploy fly launch my-wasp-app dfw --org hivelaunch是一个便捷命令它按顺序执行三步见文档 API Reference 部分wasp deploy fly setup my-wasp-app dfw # 在 Fly 上注册 client 和 server 应用并配置环境变量 wasp deploy fly create-db dfw # 创建数据库 wasp deploy fly deploy # 构建并发布 client 和 server执行完成后你的 Fly dashboard 中会出现三个应用my-wasp-app-client、my-wasp-app-server、my-wasp-app-db项目根目录会新增两个文件fly-server.toml和fly-client.toml。文档明确建议把这两个文件加入版本控制这样以后一条命令就能再次部署。这两个文件可以手动编辑来进一步配置 Fly 部署之后运行deploy时 Wasp 会读取它们。关于连接三个应用所需的环境变量launch命令会自动为服务端设置WASP_WEB_CLIENT_URL和WASP_SERVER_URL连接客户端与服务端、DATABASE_URL连接数据库以及JWT_SECRET鉴权所需。这些不需要你手动处理。应用自己还需要其他环境变量时怎么办Wasp CLI 只替你设置上面这些通用配置变量应用自身的其他变量要自己提供见部署环境变量文档生产环境会忽略.env.client和.env.server文件。服务端变量例如社交登录的 OAuth secrets有两种方式在launch时用--server-secret传入wasp deploy fly launch my-wasp-app dfw --server-secret GOOGLE_CLIENT_ID你的值 --server-secret GOOGLE_CLIENT_SECRET你的值应用部署完成后用secrets set命令设置...处替换为你自己的实际值wasp deploy fly cmd secrets set GOOGLE_CLIENT_ID你的值 GOOGLE_CLIENT_SECRET你的值 --contextserver客户端变量不能设置到托管平台上而是在执行部署命令前直接注入终端会话因为它们在构建阶段被替换进客户端静态文件。例如REACT_APP_ANOTHER_VARsomevalue wasp deploy fly deploy注意每一次部署都要这样带上客户端变量不只是第一次。文档建议的做法是在package.json里建一个deploy脚本防止遗忘{ scripts: { deploy: REACT_APP_ANOTHER_VARsomevalue wasp deploy fly deploy } }之后运行npm run deploy即可。可选的部署配置以下选项文档中均有说明按需使用选择区域用fly platform regions列出所有可用区域。本地构建默认使用 Fly 的远程 builder 构建容器如果想本地构建给launch或deploy加--build-locally参数。自定义服务端 URL客户端需要连接其他服务端地址时用--custom-server-url https://api.myapp.com。数据库规格--db-vm-size默认shared-cpu-1x、--db-initial-cluster-size默认1、--db-volume-size默认1GB等均可选。自定义 PostgreSQL 镜像默认使用flyio/postgres-flex:18镜像PostgreSQL 18与开发版本一致。需要 PostGIS、pgvector 等扩展时用--db-image 镜像指定自定义镜像且该镜像需兼容 Fly.io文档建议以官方flyio/postgres-flex为基础构建wasp deploy fly create-db region --db-image custom-postgres-image wasp deploy fly launch app-name region --db-image custom-postgres-image部署完成后如何确认结果文档给出的可核对点有三个项目根目录出现fly-server.toml和fly-client.toml且内容可编辑、会被后续deploy使用Fly dashboard 中存在三个应用名称为基础名加-client、-server、-db后缀服务端环境变量已就位可以用cmd命令透传任意 Fly 命令检查例如列出服务端 secretswasp deploy fly cmd secrets list --context server如果之后要走 CI/CD 自动化文档建议先在本地用launch完成首次部署之后在 CI 流水线里只用wasp deploy fly deploy重新部署Fly 需要 organization token详见 CI/CD 部署文档。重新部署与更新应用代码有变更时直接运行wasp deploy fly deploy该命令会把最新的 client 和 server 构建推上线不需要也不应该再次运行setup或create-db。如果应用有客户端环境变量记得在命令前带上例如REACT_APP_ANOTHER_VARsomevalue wasp deploy fly deploy。限制与常见坑setup和create-db每个应用只能各跑一次文档明确标注 Execute Only Once。重复运行会在 Fly 上创建多余的应用或数据库。launch已经把两者串好在首次部署时自动执行手动拆分使用时要特别注意。应用基础名不唯一会直接部署失败命令报失败时先检查这一点。数据库 VM 规格组合受 Fly 限制Fly 只接受特定 CPU 种类、CPU 数量与内存的组合设置--db-vm-cpus或--db-vm-cpu-kind时要选择与之匹配的--db-vm-memory值按 Fly 的 machine sizing 规则。生产环境不读.env文件.env.client和.env.server在部署时被忽略缺少的必需服务端变量会导致服务端启动失败客户端变量缺失则构建失败。以上步骤完成后应用即部署完成后续维护路径就是改代码、把配置变更写进fly-server.toml/fly-client.toml或 secrets然后运行wasp deploy fly deploy。【免费下载链接】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),仅供参考
觉得有用,分享给同行:

为您的企业打造数字门面

稳重轻奢商务风格,端正雅致视觉,长效耐看不易过时。

立即咨询 →