twilio/twilio-video-browsers本镜像集成Node.js运行环境与浏览器环境,旨在提供一站式解决方案,满足需要Node.js与浏览器协同工作的场景。通过将Node.js的脚本能力与浏览器的网页渲染/交互能力结合,可高效支持自动化测试、网页处理、爬虫等任务,避免本地环境配置差异导致的兼容性问题。
18-chrome120)区分,满足不同项目依赖需求。将本地Node.js脚本(如test.js)挂载到容器内,执行需要浏览器参与的任务:
bash# 挂载当前目录到容器工作目录,执行脚本 docker run -it --rm \ -v $(pwd):/usr/src/app \ # 挂载本地目录到容器内工作目录 -w /usr/src/app \ # 设置容器工作目录 -e HEADLESS=true \ # 启用无头模式(默认true,可选false) node+browser:18-chrome120 \ # 使用Node.js 18 + Chrome 120版本 node test.js # 执行本地脚本
若需通过本地工具(如Chrome DevTools)调试容器内浏览器,可映射调试端口:
bashdocker run -it --rm \ -v $(pwd):/usr/src/app \ -p 9222:9222 \ # 映射浏览器远程调试端口(Chrome默认9222) node+browser:latest \ node --inspect=0.0.0.0:9222 test.js # 启动浏览器调试模式
适用于多服务协同场景(如Node.js服务+浏览器任务),通过docker-compose.yml定义服务:
yamlversion: '3.8' services: browser-worker: image: node+browser:20-chrome124 # Node.js 20 + Chrome 124 volumes: - ./scripts:/usr/src/app # 挂载本地脚本目录 - ./output:/usr/src/app/output # 挂载输出目录(如截图/PDF) working_dir: /usr/src/app environment: - NODE_ENV=production # 设置Node.js环境变量 - HEADLESS=true # 无头模式启用 - SCREEN_RESOLUTION=1920x1080 # 浏览器窗口分辨率(影响截图尺寸) command: node crawl.js # 启动爬虫脚本 restart: on-failure # 任务失败时自动重试
| 参数名 | 说明 | 默认值 |
|---|---|---|
NODE_ENV | Node.js运行环境(development/production),影响日志级别、优化策略 | production |
HEADLESS | 是否启用浏览器无头模式(true/false) | true |
BROWSER_PATH | 浏览器可执行文件路径(如Chrome默认/usr/bin/google-chrome) | 内置浏览器默认路径 |
SCREEN_RESOLUTION | 浏览器窗口分辨率(如1280x720),影响截图/渲染尺寸 | 1280x720 |
LANG | 语言环境(如zh_CN.UTF-8支持中文显示) | en_US.UTF-8 |
NODE_EXTRA_CA_CERTS | Node.js额外CA证书路径,用于HTTPS请求(如自签名证书) | 空 |
| 路径 | 说明 | 建议挂载方式 |
|---|---|---|
/usr/src/app | 容器工作目录,用于存放Node.js脚本 | 挂载本地项目目录(如./scripts:/usr/src/app) |
/var/log/node-browser | 日志目录(包含Node.js与浏览器运行日志) | 可选挂载到本地(如./logs:/var/log/node-browser) |
/usr/share/fonts | 字体目录(如需自定义字体,如中文字体) | 挂载字体文件目录(如./fonts:/usr/share/fonts) |
--memory参数限制容器资源。node,UID 1000)运行,挂载本地目录时需确保权限匹配(可通过chmod 777临时测试,生产环境建议通过--user参数指定UID)。package.json的engines字段匹配,浏览器版本需与自动化工具(如Puppeteer要求Chrome版本≥对应API版本)兼容,建议通过镜像标签明确指定版本(如20-chrome124)。-fonts后缀的镜像标签(如20-chrome124-fonts),或自行挂载中文字体文件到/usr/share/fonts。manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务