
测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载本文以 CHANGELOG/4.48.0/firefox_137.md 这份发布记录为线索解读 docker-selenium 项目在 Selenium Grid 4.48.0 周期内为 Firefox 137.0.2 GeckoDriver 0.37.1 生成的 20 个镜像标签。文章结合 tag_and_push_browser_images.sh 源码与 NodeFirefox/Dockerfile讲清镜像标签命名规则、打标签脚本的每个参数、发布流程中的取舍逻辑以及如何在 Node / Standalone 模式下使用这些镜像。读完本文你既能准确挑选node-firefox、standalone-firefox的任意标签也能独立复现一次浏览器镜像的版本打标与发布操作。一、发布记录速览Firefox 137 带来了什么本次发布记录的版本组合如下组件版本号Selenium Grid Server4.48.0-20260909Firefox137.0.2Firefox 短版本137.0GeckoDriver0.37.1GeckoDriver 短版本0.37构建日期BUILD_DATE20260909该记录是执行打标签脚本后的完整控制台输出原样转录./tag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true Tagging images for browser firefox, version 4.48.0, build date 20260909, namespace selenium Selenium Grid version - 4.48.0-20260909 Firefox version - 137.0.2 Short Firefox version - 137.0 GeckoDriver version - 0.37.1 Short GeckoDriver version - 0.37 Tagged selenium/node-firefox:137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909 Tagged selenium/standalone-firefox:137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909 Tagged selenium/node-firefox:137.0.2-geckodriver-0.37.1-20260909 Tagged selenium/standalone-firefox:137.0.2-geckodriver-0.37.1-20260909 Tagged selenium/node-firefox:137.0.2-20260909 Tagged selenium/standalone-firefox:137.0.2-20260909 Tagged selenium/node-firefox:137.0-geckodriver-0.37-grid-4.48.0-20260909 Tagged selenium/standalone-firefox:137.0-geckodriver-0.37-grid-4.48.0-20260909 Tagged selenium/node-firefox:137.0-geckodriver-0.37-20260909 Tagged selenium/standalone-firefox:137.0-geckodriver-0.37-20260909 Tagged selenium/node-firefox:137.0-20260909 Tagged selenium/standalone-firefox:137.0-20260909这 12 行输出对应两个镜像node-firefox与standalone-firefox各 6 个标签。它在整个版本矩阵中的位置见 CHANGELOG/README.md 的 Firefox 矩阵表Grid 4.48.0 一行的 Firefox 覆盖 98155 共 58 个版本每个✓链接到对应的 changelog 详情firefox_137.md正是其中之一。该矩阵的动机在文档中写得很清楚——在提供最新 Selenium Grid 核心能力的同时让用户可以固定浏览器版本来做跨浏览器测试或规避特定版本缺陷。二、打标签脚本 tag_and_push_browser_images.sh 深度解析本次发布的操作核心是 tag_and_push_browser_images.shL1-L285。它不只是贴标签而是一套完整的版本探测 → 标签组装 → 本地打标 → 按需推送流水线。2.1 七个位置参数与两个环境变量脚本开头L1-L13定义了参数语义位置参数示例值含义$1VERSION4.48.0Selenium Grid 版本$2BUILD_DATE20260909构建日期YYYYMMDD$3NAMESPACEselenium镜像命名空间Docker Hub 仓库前缀$4PUSH_IMAGEfalse打标后是否执行docker push默认 false$5BROWSERfirefox浏览器类型决定走哪个分支$6RELEASE_OLD_VERSIONtrue是否为旧版本补发决定是否追加纯版本标签$7PLATFORMlinux/amd64仅 Chrome 分支探测版本时用于指定平台另有PROMOTE_TAGS与PROMOTE_GHCR_NAMESPACE两个环境变量L12-L13由发布流水线在推广已测试镜像而非重建时设置详见下文 retag() 分析。TAG_VERSION${VERSION}-${BUILD_DATE}构成 Grid 侧的核心标签4.48.0-20260909。2.2 firefox 分支的执行流程脚本以case ${BROWSER}分发L61firefox 分支位于 L195-L235共四步运行镜像探测版本L197-L204基于--platform运行node-firefox:4.48.0-20260909容器用firefox --version取第 3 个字段得到137.0.2用geckodriver --version取第 1 行第 2 个字段得到0.37.1。注意版本不是硬编码而是从镜像内部真实二进制探测出来的保证标签与实际打包内容严格一致。生成短版本L53-L57short_version()按.切分后取前两段137.0.2 → 137.0、0.37.1 → 0.37。组装标签数组L206-L230基础数组固定 6 项语义分别为浏览器版本-geckodriver-驱动版本-grid-Grid版本-日期浏览器版本-geckodriver-驱动版本-日期浏览器版本-日期上述三者的短版本等价物循环打标L232-L235对FIREFOX_TAGS中的每个标签分别对node-firefox与standalone-firefox调用retag。2.3 retag()一条函数、三条路径retag() 根据发布模式分派常规模式默认docker tag在本地打标若PUSH_IMAGEtrue再执行docker pushL46-L50。推广模式PROMOTE_TAGStrue源镜像已在镜像仓库中、从未在本机构建此时docker tag无法表达给已发布清单加别名本地 pull 只会拉回单架构因此改用docker buildx imagetools create直接在 manifest index 层面、仓库到仓库地补标签从而保持多架构清单完整L36-L44。这正对应 Makefile 注释中发布内容即测试内容的推广策略。2.4 为什么本次只生成了 6 组标签注意本次命令的第 6 个参数是true即RELEASE_OLD_VERSIONtrue。查看 脚本 L219-L230当该参数为false时还会追加 4 个不带构建日期的纯版本标签如137.0.2-geckodriver-0.37.1、137.0每个镜像共 10 个标签、两个镜像 20 个。本次跳过这 4 个从源码逻辑可以推断这是一次旧版本补发/归档发布——若同时打上无日期的137.0、137.0.2这类浮动标签会覆盖掉更新 Firefox 版本如 138已占用的同名标签破坏矩阵中每版本唯一的约定。而带-20260909日期的标签天然唯一不会互相冲突。三、标签命名规范从 20 个标签看三类命名模式本次生成的 12 个标签node 与 standalone 各 6 个可归纳为三类命名模式模式完整示例适用场景全量精确137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909复现一次精确的测试环境浏览器驱动Grid构建日全锁定驱动日期137.0.2-geckodriver-0.37.1-20260909锁定浏览器与驱动的某个组合浏览器日期137.0-20260909只关心浏览器大版本短版本与构建日期NodeFirefox 官方文档 给出了同样结构的通用模板L59-L92selenium/node-firefox-Major.Minor.Patch-YYYYMMDD selenium/node-firefox-browserVersion-browserDriver-browserDriverVersion-Major.Minor.Patch-YYYYMMDD即浏览器版本-geckodriver-驱动版本-grid-Grid版本-构建日期及全部排列组合。若RELEASE_OLD_VERSIONfalse还会追加137.0.2、137.0-geckodriver-0.37、137.0等无日期标签见上节。选标签的建议CI 中尽量使用全量精确标签保证可复现人工验证或日常开发可用137.0-20260909这类短标签latest仅适合快速上手。四、Firefox 137.0.2 是如何被打进镜像的标签背后是 NodeFirefox/Dockerfile 定义的可复现构建过程共四个关键环节。4.1 Firefox 本体APT 与官方包双通道构建参数FIREFOX_VERSION默认latest、FIREFOX_DOWNLOAD_URL、FIREFOX_LANG_VERSIONL21-L23控制安装源。Dockerfile 逻辑L24-L70主版本号 136 或amd64架构或使用*-latest频道时走install-firefox-apt.sh安装发行版 APT 包否则走 install-firefox-package.sh 从 Mozilla 官方地址下载指定版本的.deb优先或.tar.bz2/.tar.xzL42-L45 的 404 回退逻辑。装完后调用 get_lang_package.sh 从ftp.mozilla.org下载该版本的全量语言包xpi放入firefox/distribution/extensions实现多语言测试场景。最后执行一次apt-get upgrade修复 Firefox 依赖链上的潜在 CVEL68-L70。4.2 GeckoDriver跟随最新并符号链接L75-L86GECKODRIVER_VERSIONlatest时通过 GitHub releases 的跳转 URL 解析最新版本号按架构下载geckodriver-${GK_VERSION}-${DRIVER_ARCH}.tar.gzlinux64/linux-aarch64解压到/opt/geckodriver-版本并以软链形式暴露为/usr/bin/geckodriver。本次发布的0.37.1即此逻辑解析到的驱动版本。4.3 浏览器信息文件Grid 自动发现能力L93-L96 将 Firefox 的版本、名称与二进制路径写入/opt/selenium/browsers/firefox/下name、version、binary_location供 Selenium Grid Node 启动时自动生成能力配置这也是docker run后节点无需手写 capabilities 即可被 Grid 匹配的原因。4.4 运行期环境与残留进程清理L98-L99 声明两个关键环境变量SE_OTEL_SERVICE_NAMEselenium-node-firefoxOpenTelemetry 服务名见 ENV_VARIABLES.md与SE_NODE_ENABLE_MANAGED_DOWNLOADStrue由 Node 自动管理会话下载文件见 ENV_VARIABLES.md。此外 firefox-cleanup.sh 由 firefox-cleanup.conf 注册进 supervisordpriority 20按SE_BROWSER_LEFTOVERS_PROCESSES_SECS默认 7200与SE_BROWSER_LEFTOVERS_INTERVAL_SECS默认 3600周期清理僵尸firefox-bin进程该清理默认关闭由SE_ENABLE_BROWSER_LEFTOVERS_CLEANUP控制见 ENV_VARIABLES.md。五、在 Selenium Grid 中使用本次发布的镜像5.1 Hub Node 模式按 NodeFirefox 文档# 1. 创建网络 docker network create grid # 2. 启动 Hub暴露 4442-4444 端口 docker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest # 3. 启动 Firefox Node用全量精确标签锁定版本 docker run -d --net grid -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909然后即可将 WebDriver 测试指向http://localhost:4444。文档特别提醒包含浏览器的镜像务必加--shm-size2g以使用宿主机共享内存避免浏览器崩溃测试结束可用docker network rm grid清理网络。5.2 Standalone 模式与快速验证单容器场景直接使用standalone-firefoxdocker run -d -p 4444:4444 --shm-size2g \ selenium/standalone-firefox:137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909Makefile 的firefox_upgrade_version目标展示了发布后验证版本的标准姿势依次执行selenium-server.jar info --version、firefox --version、geckodriver --version与打标签脚本的探测命令一一对应可作为自行校验镜像内容的清单。5.3 编排文件中的用法仓库根目录的 docker-compose-v3.yml 等编排文件如 docker-compose-v3-full-grid.yml提供了 Hub/Node 一体化启动方式只需将selenium/node-firefox与selenium/standalone-firefox的镜像标签替换为本次发布的精确标签即可锁定测试基线。六、版本矩阵中的定位与注意事项从 CHANGELOG/README.md 可确认两点归档机制每个 Grid 大版本都有独立的 changelog 目录当前为 4.48.0历史版本归档在archived/下保证任意Grid 版本 × 浏览器版本组合都能找到对应的发布记录与可用标签。官方免责声明项目明确表示并未对每个 Grid 与浏览器版本的组合做全量测试用户需要根据自身测试需求评估和决策。因此选择137.0.2-geckodriver-0.37.1-grid-4.48.0-20260909这类精确标签、并在自己的真实业务用例上先行验证是比盲目跟随latest更稳妥的做法。结语一份看似只有 20 行输出的 changelog实际承载了 docker-selenium 完整的浏览器镜像发布体系从 tag_and_push_browser_images.sh 的版本探测与标签组装到 NodeFirefox/Dockerfile 的可复现构建再到RELEASE_OLD_VERSION对标签集合的精巧取舍。掌握这套机制后你既能看懂任何一次浏览器版本发布的产物也能为团队内部的镜像管理设计出同样的可追溯、可复现的标签策略。赞分享测试后端云原生容器编排可观测性【免费下载链接】docker-seleniumProvides a simple way to run Selenium Grid with Chrome, Firefox, and Edge using Container Platform, making it easier to perform browser automation at scale项目地址https://gitcode.com/GitHub_Trending/do/docker-selenium点击查看免费下载相关推荐Docker 一键部署 JRebel 激活服务器jrebel-license-active-server 容器化实战Docker 一键部署 JRebel 激活服务器jrebel license active server 容器化实战 在 Java 开发圈里JRebel 是测试后端云原生容器编排可观测性docker-selenium 4.48.0 发布解析Firefox 147 GeckoDriver 0.37 镜像标签体系与发布流程docker selenium 4.48.0 发布解析Firefox 147 GeckoDriver 0.37 镜像标签体系与发布流程 本篇文章以 CHA测试后端云原生容器编排可观测性docker-selenium 4.48.0 Firefox 101 镜像标签体系与发布打标签流程全解析docker selenium 4.48.0 Firefox 101 镜像标签体系与发布打标签流程全解析 docker selenium 项目通过容器平台为 S测试后端云原生容器编排可观测性上一篇openEuler社区探索中国顶级开源操作系统的完整治理体系下一篇OmniStateStore开发者指南贡献代码与参与社区的实用清单创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考