在极小的Alpine镜像中以无头模式运行的Chrome浏览器,适用于网页测试、自动化和内容生成等场景,体积小巧且功能丰富。
收藏数: 72
下载次数: 21857023
类型:
zenika/alpine-chromewith-node、100-with-node、100-with-node-16(带Node.js)(Dockerfile)with-puppeteer、100-with-puppeteer(带Puppeteer)(Dockerfile)with-playwright、100-with-playwright(带Playwright)(Dockerfile)with-selenoid、100-with-selenoid(带Selenoid)(Dockerfile)with-chromedriver、100-with-chromedriver(带Chromedriver)(Dockerfile)89、86、85、84、83、81、80、77、76、73、72、71、68、6489-with-node、86-with-node、85-with-node等89-with-puppeteer、86-with-puppeteer等在极小的Alpine镜像中以无头模式运行的Chrome浏览器
在Web开发中,快速运行端到端测试至关重要。Puppeteer等流行技术使开发者能够实现测试、表单自动化、网页爬取、截图生成、时间线捕获等功能。而秘密在于:Chrome原生支持其中部分功能!🙌
仅使用docker container run -it zenika/alpine-chrome ...启动容器会失败,日志类似#33。请使用以下三种方法。
--no-sandbox启动容器命令:
docker container run -it --rm zenika/alpine-chrome,并在所有命令中添加--no-sandbox参数。
注意:确保信任目标网站。
no-sandbox参数的简要说明参见此处,深度设计文档参见此处。
SYS_ADMIN权限启动容器命令:
docker container run -it --rm --cap-add=SYS_ADMIN zenika/alpine-chrome
此方法允许Chrome启用沙箱,但从Docker角度看授予了不必要的权限。
seccomp基于Jessie Frazelle的Chrome安全计算(seccomp)配置文件,这是最安全的运行方式。
配置文件:chrome.json,也可通过wget [***]获取。
启动容器命令:
docker container run -it --rm --security-opt seccomp=$(pwd)/chrome.json zenika/alpine-chrome
默认入口点执行命令:chromium-browser --headless --disable-gpu --disable-software-rasterizer --disable-dev-shm-usage
如需完全控制,可覆盖入口点:docker container run -it --rm --entrypoint "" zenika/alpine-chrome chromium-browser ...
命令(需no-sandbox):docker container run -d -p 9222:9222 zenika/alpine-chrome --no-sandbox --remote-debugging-address=0.0.0.0 --remote-debugging-port=9222 [***]
在浏览器中访问http://localhost:9222,点击要检查的标签页。将链接开头的https://chrome-devtools-frontend.appspot.com/serve_file/@.../inspector.html?ws=localhost:9222/[END]替换为chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9222/[END]。
命令(需no-sandbox):docker container run -it --rm zenika/alpine-chrome --no-sandbox --dump-dom [***]
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --print-to-pdf --hide-scrollbars [***]
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars [***]
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=1280,1696 [***]
命令(需no-sandbox):docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=412,732 [***]
命令(需no-sandbox):docker container run -u `id -u $USER` -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome --no-sandbox --screenshot --hide-scrollbars --window-size=412,732 [***]
进入deno src目录,构建镜像:
docker image build -t zenika/alpine-chrome:with-deno-sample .
启动容器:
docker container run -it --rm zenika/alpine-chrome:with-deno-sample Download [***] Warning Implicitly using master branch [***] Compile [***] Welcome to Deno 🦕
运行自定义文件:
docker container run -it --rm -v $(pwd):/usr/src/app zenika/alpine-chrome:with-deno-sample run helloworld.ts Compile file:///usr/src/app/helloworld.ts Download [***] Warning Implicitly using master branch [***] Hello world!
借助"Puppeteer"工具,可扩展无头Chrome功能。通过NodeJS代码可实现更复杂的测试。
详见"with-puppeteer"目录。需遵循Chromium与Puppeteer版本对应关系。
若src目录中有NodeJS/Puppeteer脚本pdf.js,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer node src/pdf.js
通过"wqy-zenhei"库支持亚洲语言页面(如"screenshot-asia.js"):
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer node src/screenshot-asia.js
已测试支持以下语言的网站:
[***])[***])[***])根据Puppeteer官方文档,无头模式不支持测试Chrome扩展,需借助Xvfb提供显示环境。
详见"with-puppeteer-xvfb"目录,需遵循Chromium与Puppeteer版本对应关系。
若src目录中有脚本extension.js,扩展文件在chrome-extension目录,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-puppeteer-xvfb node src/extension.js
示例扩展将所有网站背景设为红色,脚本会加载扩展并截取icanhazip.com的截图。
类似"Puppeteer","Playwright"也可扩展无头Chrome功能。
进入with-playwright目录,启动命令:
docker container run -it --rm -v $(pwd)/src:/usr/src/app/src --cap-add=SYS_ADMIN zenika/alpine-chrome:with-playwright node src/useragent.js
with-playwright/src目录将生成example-chromium.png文件。
默认支持WebGL,如需禁用,启动Chromium时添加--disable-gpu。
with-webgl标签已弃用,将于2020年8月底前移除。
示例命令:
docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars [***]
docker container run -it --rm --cap-add=SYS_ADMIN -v $(pwd):/usr/src/app zenika/alpine-chrome --screenshot --hide-scrollbars [***]
相关链接:
ChromeDriver是Selenium WebDriver控制Chrome的独立可执行文件。本镜像可作为Docker化Selenium测试的基础。详见使用Chromedriver运行Selenium测试指南。
Selenoid是基于Docker的Selenium hub实现,轻量级且功能强大。with-selenoid镜像包含Selenium服务器、Chrome和Chromedriver。
启动命令:
docker container run -it --rm --cap-add=SYS_ADMIN -p 4444:4444 zenika/alpine-chrome:with-selenoid -capture-driver-logs
测试可访问http://localhost:4444/wd/hub。
在GitLab CI等Docker权限受限环境中,可能无法使用--cap-add=SYS_ADMIN,需向chromedriver传递--no-sandbox参数。详见selenoid文档。
命令:
docker container run --rm -it --entrypoint "" --user root zenika/alpine-chrome sh
examples目录提供以下示例:
以下是 zenika/alpine-chrome 相关的常用 Docker 镜像,适用于 不同场景 等不同场景:
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 版本下载页面。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务