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 先做拉取预检。镜像阶段通过后,后面的重点是浏览器工具边界。

相关推荐
Lsetea8 小时前
curl指定CA目录仍报证书不受信任:--capath与OpenSSL rehash排查
运维·https·ssl·openssl·curl
优化Henry9 小时前
LTE 载波频率与频点配置详解
运维·网络·学习·5g·信息与通信
程序员清风9 小时前
Docker、Nginx 与 Kubernetes 部署 AI 后端服务
nginx·docker·kubernetes
代码方舟9 小时前
数据科学风控实战:基于天远全能消金报告构建自动化信用评估网关
运维·人工智能·自动化
科力锐品牌君10 小时前
应用级灾备 | 海量非结构化数据如何实现高效数据保护
linux·运维·网络·安全·系统安全·数据安全·灾备
KaiwuDB10 小时前
KaiwuDB 运维实战04:DRBD + KaiwuDB——物联网场景下的低成本数据库高可用方案
运维·数据库·物联网·时序数据库·kaiwudb·aiot·多模数据库
Zhu75810 小时前
离线二进制部署-Kubernetes-v1.36.4
容器·贪心算法·kubernetes
福建佰胜张工10 小时前
A5E00839230西门子工业核心配件详解:参数、安装调试与故障运维全攻略
运维·网络·安全·自动化
Lancker11 小时前
chnroute-linux — 中国大陆 IP 段每日自动更新 + 「仅允许国内访问」落地
linux·运维·tcp/ip
谢亮_vipxieliang11 小时前
镜像安全:扫描、签名与软件供应链
安全·docker