资讯详情

Midscene容器化部署:容器里跑自动化服务

📅 2026/9/11 6:19:26 | 华诺云谱 👁 阅读
Midscene容器化部署:容器里跑自动化服务
Midscene容器化部署容器里跑自动化服务【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene上周把 Midscene 的 Web 自动化环境搬进 CI 时容器起好了宿主机的浏览器却死活打不开 Playground 面板。查了半天日志最后是一个默认绑定 127.0.0.1 的环境变量在作怪。Midscene 是用视觉语言模型驱动页面操作的 GUI 自动化框架这篇把容器化之后的三种用法和踩过的坑一次说清。少折腾的那些事容器化解决的其实是三件具体的事CI 机器零配置跑通同一套环境换台电脑不再重装依赖模型密钥不落到镜像里三种场景各走各的路场景A容器化部署一个能打开的Web自动化Playground需求前提你要一个浏览器能开的 Web 面板来跑和调试 ai 任务且不想在自己开发机上装整套依赖。仓库是个 pnpm monorepoworkspace 定义Playground 前端在 apps/playground控制服务默认端口 5800见 端口常量。Dockerfile构建上下文放仓库根目录FROM node:22-alpine # 根 package.json 的 engines 要求 Node 20.19 WORKDIR /repo COPY . . RUN corepack enable \ pnpm install --frozen-lockfile \ pnpm build # 先全量构建再跑 app 才不会缺 dist EXPOSE 5800 3000 CMD [pnpm, -F, playground, run, demo]compose 里只留和模型、网络相关的变量模型变量名对照模型环境变量文档services: midscene-web: build: . # 上下文是仓库根目录 environment: MIDSCENE_PLAYGROUND_HOST: 0.0.0.0 # 关键默认 127.0.0.1 容器外连不上 MIDSCENE_MODEL_BASE_URL: https://dashscope.aliyuncs.com/compatible-mode/v1 MIDSCENE_MODEL_API_KEY: your-api-key MIDSCENE_MODEL_NAME: qwen3.7-plus MIDSCENE_MODEL_FAMILY: qwen3 ports: - 5800:5800 # Playground 控制服务 - 3000:3000 # rsbuild 前端默认端口两个最容易设错的点MIDSCENE_PLAYGROUND_HOST监听逻辑里默认绑定 127.0.0.1只映射端口改不了绑定地址不设这个变量宿主机一定连不上。基础镜像版本engines 写死了^20.19 || ^22.12 || 24随手用 node:18-alpine 会在构建阶段翻车。如果目标不是开面板而是一批每次都要跑的 YAML 脚本往下看。场景B给CI流水线加一个自动化服务执行器前提你有一组 YAML 脚本希望每次代码变更都能在无头环境跑完不需要面板。执行器直接用已发布的midscene/cliCLI 入口二进制名midscene不背整个 monorepo。FROM node:22-alpine WORKDIR /work COPY . . # 包含 midscene.yaml 和 .env CMD [npx, -y, midscene/cli, midscene.yaml, --dotenv-override]脚本本体很短示例放个最小形态web: url: https://example.com task: - name: 验证首页可渲染 flow: - ai: 等待页面加载完成 - aiAssert: 首页有搜索框CI 步骤里用-e注入密钥不落进镜像docker run --rm \ -e MIDSCENE_MODEL_API_KEY$MODEL_API_KEY \ -e MIDSCENE_MODEL_BASE_URL$MODEL_BASE_URL \ -e MIDSCENE_MODEL_NAME$MODEL_NAME \ -e MIDSCENE_MODEL_FAMILY$MODEL_FAMILY \ -v $PWD:/work \ midscene-ci:latest--dotenv-override值得单独说一句CLI 启动时会加载工作区.env见 dotenv 加载逻辑如果工作区里恰好有个写着旧密钥的.env默认是容器环境变量优先、文件里的是不生效的反过来想让文件强制覆盖容器变量就加这个开关。密钥来源二选一别让两处各有一份。前面两种都是程序驱动浏览器想驱动的是自己桌面上已登录的 Chrome那就是另一个场景。场景C桥接模式留在桌面别装进容器桥接模式用 AgentOverChromeBridge 复用桌面 Chrome 的登录态脚本跑在 Node 侧模型密钥也从 Node 侧环境变量读——它天然依赖桌面这个前提塞进容器没有意义。适用边界一句话人在电脑前、要碰已登录的 Chrome 才用它批量、无人值守一律回场景 A/B。踩过的坑容器化部署容易卡住的地方坑一构建直接报错 Node 版本不符症状pnpm install或pnpm build阶段直接失败。根因镜像用了 node:18-alpine而根 package.json 的 engines 要求^20.19.0 || ^22.12.0 || 24.0.0。修复FROM node:22-alpine坑二容器状态全绿宿主机却打不开面板症状docker ps一切正常浏览器访问http://host:5800超时。根因Playground 服务默认只监听 127.0.0.1端口映射解决不了绑定地址问题。修复environment: MIDSCENE_PLAYGROUND_HOST: 0.0.0.0坑三密钥明明填了模型调用却报未配置症状401 或提示缺少模型配置而密钥确实配在了浏览器侧的模型设置里。根因桥接/Playground 模式下模型配置只从 Node 进程的环境读浏览器侧的输入对容器进程无效。修复把MIDSCENE_MODEL_API_KEY等四个变量写进 compose 的environment。这套方案的边界无头容器没有显示器、也没有真机Android/iOS 场景需要 adb/hdc 连上设备或模拟器容器化到这一步就到头了。任务量上来之后的升级方向K8s Job 按任务水平扩或单独做一个任务队列服务。收尾回到开头那个连不上的面板今晚把MIDSCENE_PLAYGROUND_HOST0.0.0.0加进 compose重建一次5800 端口就能从宿主机打开。CI 执行器更省事——镜像构好、四个模型变量注入进去流水线就能跑。【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。