Playwright MCP Docker 部署:mcr 镜像、浏览器工具和权限配置

这次记录 Playwright MCP 的 Docker 部署方式。目标不是把浏览器自动化讲成概念,而是给 AI Agent 准备一个可控的浏览器工具运行时:镜像先拉下来,MCP JSON 能启动,截图和日志有目录,网络和账号边界能提前写清。

先做镜像预检:

bash 复制代码
docker pull mcr.1ms.run/playwright/mcp

mcr.1ms.run/playwright/mcp 对应上游 MCR 镜像入口。这里先确认 Registry 入口和镜像拉取链路,再继续排 MCP 配置和浏览器权限。

1. 环境目标

本文目标:

  • 用 Docker 运行 Playwright MCP Server。
  • 通过 MCP 客户端配置 mcpServers.playwright
  • 把浏览器工具限制在可控容器生命周期里。
  • 为截图、trace、下载文件预留输出目录。
  • 上线前检查账号、网络、凭据和资源限制。

适用场景:

  • AI Agent 做内部后台巡检。
  • 回归测试里补一层浏览器路径检查。
  • Bug 复现时截图和记录页面状态。
  • 测试环境里跑低风险表单流程。

2. 最小 MCP JSON

先用最小参数验证:

json 复制代码
{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "--name",
        "playwright-mcp",
        "mcr.1ms.run/playwright/mcp"
      ]
    }
  }
}

参数说明:

参数 作用
run 启动容器
-i MCP stdio 通信需要保持输入流
--rm 退出后清理容器
--init 处理容器内子进程
--name 便于排查容器状态
mcr.1ms.run/playwright/mcp Playwright MCP 镜像入口

3. 增加输出目录

如果需要保存截图、trace 或下载文件,可以给容器挂一个输出目录:

bash 复制代码
mkdir -p mcp-output
json 复制代码
{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "--name",
        "playwright-mcp",
        "-v",
        "./mcp-output:/tmp/mcp-output",
        "mcr.1ms.run/playwright/mcp"
      ]
    }
  }
}

输出目录要按项目隔离,不要把浏览器下载目录直接挂到用户主目录。

4. 增加资源边界

浏览器容器可能吃 CPU 和内存,建议在测试机上加资源边界:

json 复制代码
{
  "mcpServers": {
    "playwright": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--init",
        "--name",
        "playwright-mcp",
        "--cpus",
        "2",
        "--memory",
        "2g",
        "mcr.1ms.run/playwright/mcp"
      ]
    }
  }
}

资源值要按页面复杂度调整。后台页面截图、简单表单和完整 E2E 测试的资源消耗差异很大。

5. 验证顺序

建议按下面顺序排:

bash 复制代码
docker pull mcr.1ms.run/playwright/mcp
docker images | grep playwright
docker ps -a | grep playwright-mcp

如果 MCP 客户端无法调用工具,先看三类问题:

现象 排查方向
客户端找不到 server JSON 路径、字段名、客户端重载
容器启动后退出 Docker args、镜像版本、容器日志
浏览器动作失败 测试账号、目标 URL、页面权限
截图没有产物 输出目录挂载和工具参数
页面能打开但不能操作 元素选择、登录态、权限和弹窗

6. 权限检查表

检查项 建议
账号 只给测试账号或低权限账号
域名 控制访问域名和内网段
输出 截图、trace、下载目录单独管理
凭据 不把 Cookie、Token 写进截图和日志
操作 删除、支付、批量修改等动作默认关闭
审计 记录任务、时间、页面路径和输出文件

总结

Playwright MCP 解决的是 Agent 操作浏览器的工具接口问题,Docker 解决的是运行时边界问题。部署时不要只看镜像是否能拉下来,还要把 MCP JSON、容器生命周期、输出目录、账号权限和网络范围一起检查。

毫秒镜像在这里的作用很具体:当镜像来自 MCR 时,用 mcr.1ms.run/playwright/mcp 先做拉取预检。镜像阶段通过后,后面的重点是浏览器工具边界。

相关推荐
das2m1 小时前
WSL2 Ubuntu 配置完美版 docker compose 指南
linux·ubuntu·docker
暮云星影1 小时前
个人总结 docker搭建私人照片云相册Immich
docker·容器·arm
AI服务老曹1 小时前
破局异构计算与海量协议:基于 Docker 容器化的国标 GB28181/RTSP 边缘计算 AI 视频管理平台架构设计与源码交付实践
人工智能·docker·边缘计算
江湖有缘2 小时前
Docker一键部署open-resume简历生成器
运维·docker·容器
丑过三八线2 小时前
Runc 深度解析:从原理到实操
java·linux·开发语言·docker·容器·rpc
沉在嵌入式的鱼2 小时前
Jetson系列集成第三方库和应用程序到镜像方案
运维·服务器
weixin_604236672 小时前
华三 二层交换机 企业完整正式版配置
运维·网络·华为·华为交换机命令
qq_452396232 小时前
第三篇:《Kubectl 常用命令与资源管理》
运维·kubelet
hai3152475432 小时前
libcore_final.c —— 九章数流矩阵系统
linux·运维·网络