
schliflo/docker-puppeteer包含Google Puppeteer和截图脚本的Docker镜像。
及配套截图脚本,可快速用于网页自动化操作、网页截图生成、定时截图等场景,简化Puppeteer环境配置流程。
bashdocker pull schliflo/docker-puppeteer:latest # 或指定版本 docker pull schliflo/docker-puppeteer:2.1.0
启动Puppeteer浏览器实例时,必须添加--no-sandbox和--disable-setuid-sandbox参数:
jsconst puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch({ args: [ '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); await page.goto('[***] {waitUntil: 'networkidle2'}); browser.close(); })();
若遇到页面崩溃并提示BUS_ADRERR错误(chromium issue),需通过--shm-size参数增加共享内存大小:
bashdocker run --shm-size 1G --rm -v <本地脚本路径>:/app/index.js schliflo/docker-puppeteer:latest
若出现随机导航错误(如无法访问URL),可能是Docker启用了IPv6导致。通过--sysctl参数禁用IPv6可修复:
bashdocker run --shm-size 1G --sysctl net.ipv6.conf.all.disable_ipv6=1 --rm -v <本地脚本路径>:/app/index.js schliflo/docker-puppeteer:latest
如需Chrome调试日志,添加--enable-logging参数(详细说明:[***]
jsconst puppeteer = require('puppeteer'); (async() => { const browser = await puppeteer.launch({args: [ '--no-sandbox', '--disable-setuid-sandbox', // 调试日志参数 '--enable-logging', '--v=1' ]}); // ... })();
将本地脚本挂载到容器的/app/index.js路径,容器会自动执行该脚本:
bashdocker run --shm-size 1G --rm -v <本地脚本路径>:/app/index.js schliflo/docker-puppeteer:latest
挂载本地目录至/app,并指定要运行的脚本文件名:
bashdocker run --shm-size 1G --rm \ -v <本地目录路径>:/app \ schliflo/docker-puppeteer:latest \ node my_script.js
镜像内置简单截图工具,支持多种截图模式。
bashdocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \ schliflo/docker-puppeteer:latest \ <工具名称> '目标URL' 宽x高 [<延迟毫秒数>]
screenshot、full_screenshot、screenshot_series、full_screenshot_series1366x768截取指定尺寸窗口内的网页可见区域:
bashdocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \ schliflo/docker-puppeteer:latest \ screenshot '[***] 1366x768
输出:单行JSON格式结果
json{ "date":"2017-09-01T05:03:27.464Z", "timestamp":***, "filename":"screenshot_1366_768.png", "width":1366, "height":768 }
截图文件保存路径:/tmp/screenshots/screenshot_1366_768.png(对应本地挂载目录)
截取网页完整内容(包含滚动区域):
bashdocker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \ schliflo/docker-puppeteer:latest \ full_screenshot '[***] 1366x768
文件名包含ISO格式时间戳,适用于定时截图场景:
bash# 基础系列截图 docker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \ schliflo/docker-puppeteer:latest \ screenshot_series '[***] 1366x768 # 全屏系列截图 docker run --shm-size 1G --rm -v /tmp/screenshots:/screenshots \ schliflo/docker-puppeteer:latest \ full_screenshot_series '[***] 1366x768
输出文件名示例:
2017-09-01T05:08:55.027Z_screenshot_1366_768.png # 或 2017-09-01T05:08:55.027Z_full_screenshot_1366_768.png
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务