ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

OpenClaw Fly.io 部署实战:从零到生产环境

OpenClaw Fly.io 部署实战:从零到生产环境 1. 引言OpenClaw 是一个开源的多智能体协作框架支持将多个 AI Agent 编排为可协同工作的系统。Fly.io 则是一个面向全球部署的容器平台基于 Firecracker 微虚拟机运行应用支持在边缘节点就近部署。本文将带你从零开始把 OpenClaw 完整部署到 Fly.io 生产环境并给出丰富的可运行代码示例。2. 环境准备在开始部署之前需要先准备好本地开发环境。以下是推荐的工具链和版本要求Fly CLIFly.io 官方命令行工具版本要求 0.2.0 及以上。Docker用于本地构建和验证镜像版本要求 20.10 及以上。Node.jsOpenClaw 运行时依赖建议使用 20 LTS 版本。Git用于拉取 OpenClaw 源码和版本管理。首先安装 Fly CLI 并完成登录认证# 安装 Fly CLImacOS / Linux curl -L https://fly.io/install.sh | sh 验证安装 fly version 登录 Fly.io 账号 fly auth login登录成功后浏览器会自动打开授权页面完成授权后终端会显示登录成功信息。3. 拉取 OpenClaw 源码OpenClaw 的源码托管在 GitHub 上使用 Git 克隆到本地工作目录# 克隆 OpenClaw 仓库 git clone https://github.com/openclaw/openclaw.git cd openclaw 切换到稳定版本分支可选 git checkout v1.2.0 安装项目依赖 npm install安装完成后可以先在本地启动 OpenClaw 验证环境是否正常# 本地启动开发服务器 npm run dev看到终端输出监听端口信息后说明本地环境已经就绪可以进入下一步的容器化配置。4. 编写 DockerfileFly.io 支持直接部署 Docker 镜像因此我们需要为 OpenClaw 编写一个生产可用的 Dockerfile。在项目根目录创建Dockerfile# 使用多阶段构建减小最终镜像体积 FROM node:20-alpine AS builder WORKDIR /app 先复制依赖清单充分利用 Docker 层缓存 COPY package.json package-lock.json ./ RUN npm ci 复制源码并构建 COPY . . RUN npm run build 生产镜像阶段 FROM node:20-alpine WORKDIR /app ENV NODE_ENVproduction 从构建阶段复制产物 COPY --frombuilder /app/node_modules ./node_modules COPY --frombuilder /app/dist ./dist COPY --frombuilder /app/package.json ./ 创建非 root 用户提升安全性 RUN addgroup -S openclaw adduser -S openclaw -G openclaw USER openclaw EXPOSE 8080 CMD [node, dist/server.js]这里使用多阶段构建第一阶段负责编译第二阶段只保留运行所需的文件最终镜像体积可以控制在 200MB 以内。5. 创建 Fly.io 应用接下来在 Fly.io 上创建应用实例。使用fly launch命令可以交互式完成初始化# 在项目目录下执行 fly launch --name openclaw-demo --region hkg --no-deploy参数说明--name应用名称全局唯一这里使用openclaw-demo。--region指定部署区域hkg表示香港节点适合亚太地区用户。--no-deploy只创建应用和配置文件不立即部署。执行完成后项目目录下会生成fly.toml配置文件内容大致如下app openclaw-demo [build] dockerfile Dockerfile [env] PORT 8080 [[services]] http_checks [] internal_port 8080 processes [app] [[services.ports]] handlers [http] port 80 [[services.ports]] handlers [tls, http] port 443这个配置声明了应用名称、构建方式、环境变量和端口映射规则。Fly.io 会自动为 443 端口签发 TLS 证书。6. 配置环境变量与密钥OpenClaw 运行需要一些敏感配置例如数据库连接串、API 密钥等。这些信息不应该写死在镜像里而是通过 Fly.io 的 Secrets 机制注入。使用fly secrets set命令设置# 设置数据库连接串 fly secrets set DATABASE_URLpostgres://user:passwordhost:5432/openclaw 设置 Agent API 密钥 fly secrets set OPENAI_API_KEYsk-xxxxxxxxxxxxxxxx 设置会话加密密钥 fly secrets set SESSION_SECRET$(openssl rand -hex 32)对于非敏感的常规配置可以直接写入fly.toml的[env]段[env] PORT 8080 LOG_LEVEL info DEFAULT_MODEL gpt-4o-mini MAX_CONCURRENT_AGENTS 10修改配置后需要重新部署才会生效。7. 配置持久化卷OpenClaw 的会话状态和 Agent 记忆需要持久化存储。Fly.io 提供 Volume 功能可以为应用挂载持久化磁盘。首先创建卷# 创建 10GB 的持久化卷 fly volumes create data --size 10 --region hkg然后在fly.toml中声明挂载点[mounts] source data destination /data最后在应用代码中将数据写入/data目录即可实现持久化。例如在 OpenClaw 的配置文件中指定数据目录// config.js module.exports { dataDir: process.env.DATA_DIR || /data, // 其他配置... };8. 部署到生产环境完成以上配置后就可以执行正式部署了。使用fly deploy命令# 部署应用 fly deploy 查看部署状态 fly status部署过程会依次执行构建镜像、上传到 Fly.io 镜像仓库、创建虚拟机、启动应用、健康检查。看到以下输出表示部署成功 Verifying app config Building image Pushing image to fly Creating release Starting instance Health check passed Visit your app at: https://openclaw-demo.fly.dev部署完成后可以通过fly open命令在浏览器中打开应用fly open9. 配置自定义域名与 HTTPS默认情况下Fly.io 会分配一个*.fly.dev的免费域名。如果需要绑定自己的域名可以按以下步骤操作。首先添加自定义域名# 绑定自定义域名 fly certs add api.example.com然后到域名服务商处配置 DNS 记录将域名解析到 Fly.io 的负载均衡器。等待证书签发完成后即可通过自定义域名访问# 查看证书状态 fly certs show api.example.comFly.io 会自动管理 TLS 证书的签发和续期无需手动干预。10. 水平扩展与多区域部署当业务量增长时可以通过fly scale命令水平扩展实例数量# 扩展到 3 个实例 fly scale count 3 查看实例分布 fly status如果需要多区域就近部署可以在fly.toml中配置多个区域[[services]] internal_port 8080 [[services.ports]] handlers [http] port 80 [[services.ports]] handlers [tls, http] port 443 [[services.concurrency]] type connections hard_limit 1000 soft_limit 800然后使用fly regions add添加更多区域# 添加东京和新加坡区域 fly regions add nrt sinFly.io 会自动将流量路由到离用户最近的区域。11. 日志查看与监控生产环境需要实时监控应用状态。Fly.io 提供了内置的日志查看功能# 实时查看应用日志 fly logs 查看最近 100 行日志 fly logs --num 100同时可以在 OpenClaw 中接入结构化日志便于后续接入日志分析平台// logger.js const pino require(pino); const logger pino({ level: process.env.LOG_LEVEL || info, base: { service: openclaw, env: process.env.NODE_ENV } }); module.exports logger;12. 滚动更新与回滚Fly.io 默认采用滚动更新策略新版本会逐步替换旧版本期间服务不中断。更新代码后重新部署即可# 重新部署新版本 fly deploy 查看发布历史 fly releases 回滚到上一个版本 fly releases rollback如果新版本出现问题可以快速回滚到任意历史版本保障业务连续性。13. 常见问题排查部署过程中可能会遇到一些问题这里整理几个常见场景及解决方案。问题一健康检查失败Fly.io 默认会检查应用的 HTTP 端口是否响应。如果健康检查失败通常是端口配置不一致。确认fly.toml中的internal_port与代码监听的端口一致# 查看应用日志定位问题 fly logs问题二内存不足导致 OOMOpenClaw 运行多个 Agent 时可能占用较多内存。可以通过fly scale调整内存大小# 调整内存到 1GB fly scale memory 1024问题三跨区域访问延迟高如果用户分布在全球多个区域建议开启多区域部署并配合 Fly.io 的 Anycast 网络自动就近路由。14. 总结本文详细介绍了将 OpenClaw 部署到 Fly.io 的完整流程包括环境准备、Docker 镜像构建、应用配置、持久化存储、域名绑定、水平扩展和日志监控等环节。通过 Fly.io 的容器化部署能力OpenClaw 可以快速在全球范围内部署和扩展为多智能体应用提供稳定可靠的运行环境。建议读者结合自身业务场景灵活调整配置参数并在生产环境上线前做好充分的压测和监控准备。
返回列表