尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
docker-selenium 4.29.0 Firefox 125 版本发布全解析:镜像标签生成机制与 GeckoDriver 版本对齐实战
测试后端云原生容器编排可观测性【免费下载链接】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-selenium 仓库归档的发布记录 CHANGELOG/archived/4.29.0/firefox_125.md完整还原 Selenium Grid 4.29.0-20250303 版本中 Firefox 125.0.3 GeckoDriver 0.36.0 镜像的标签生成过程。文章不仅逐条解读发布产物更深入剖析背后的核心脚本 tag_and_push_browser_images.sh 的参数语义、版本探测原理与标签命名规范并结合 NodeFirefox/Dockerfile 的构建逻辑与 docs/docker-hub/node-firefox.md 的选标签指南帮助读者掌握发布记录如何读、标签体系如何用、镜像如何选的完整链路。发布记录逐行解读4.29.0 的 Firefox 125 产物清单归档文档 firefox_125.md 的核心是一段tag_and_push_browser_images.sh的执行日志。完整命令与输出如下./tag_and_push_browser_images.sh 4.29.0 20250303 selenium false firefox true Tagging images for browser firefox, version 4.29.0, build date 20250303, namespace selenium Selenium Grid version - 4.29.0-20250303 Firefox version - 125.0.3 Short Firefox version - 125.0 GeckoDriver version - 0.36.0 Short GeckoDriver version - 0.36 Tagged selenium/node-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303 Tagged selenium/node-firefox:125.0.3-geckodriver-0.36.0-20250303 Tagged selenium/standalone-firefox:125.0.3-geckodriver-0.36.0-20250303 Tagged selenium/node-firefox:125.0.3-20250303 Tagged selenium/standalone-firefox:125.0.3-20250303 Tagged selenium/node-firefox:125.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/standalone-firefox:125.0-geckodriver-0.36-grid-4.29.0-20250303 Tagged selenium/node-firefox:125.0-geckodriver-0.36-20250303 Tagged selenium/standalone-firefox:125.0-geckodriver-0.36-20250303 Tagged selenium/node-firefox:125.0-20250303 Tagged selenium/standalone-firefox:125.0-20250303这段日志包含三层关键信息信息类别具体取值含义Selenium Grid 版本4.29.0-20250303Grid 主版本号 构建日期TAG_VERSION的拼装结果Firefox 版本125.0.3短版本125.0镜像内实际安装的 Firefox 完整版本GeckoDriver 版本0.36.0短版本0.36Firefox 对应的 WebDriver 驱动版本同一份FIREFOX_TAGS列表被依次应用到node-firefox与standalone-firefox两类镜像上最终产生 6 × 2 12 个标签。核心脚本剖析tag_and_push_browser_images.sh 的参数与流程发布记录里的命令本质上是对 tag_and_push_browser_images.sh 的一次调用。该脚本通过位置参数控制整个发布行为VERSION$1 # Selenium Grid 版本号如 4.29.0 BUILD_DATE$2 # 构建日期如 20250303 NAMESPACE$3 # 镜像命名空间如 selenium PUSH_IMAGE${4:-false} # 是否推送镜像到 Registry默认 false BROWSER$5 # 浏览器类型chrome / chromium / edge / firefox / chrome-for-testing RELEASE_OLD_VERSION${6:-false} # 是否为旧版本补发默认 false PLATFORM${7:-linux/amd64} # 探测版本时运行的平台默认 linux/amd64脚本开头会拼装完整版本标识并定义retag()与short_version()两个函数TAG_VERSION${VERSION}-${BUILD_DATE}即日志中的4.29.0-20250303short_version()通过字符串分割取前两段把125.0.3压缩为125.0、0.36.0压缩为0.36用于生成短版本标签retag()执行docker tag当PUSH_IMAGE为true时追加docker push实现打标签并推送一步到位。firefox 分支的版本探测逻辑脚本在 firefox 分支中并非硬编码版本号而是通过docker run启动刚构建好的镜像从容器内二进制文件动态提取版本FIREFOX_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} firefox --version | awk {print $3}) GECKODRIVER_VERSION$(docker run --rm ${NAMESPACE}/node-firefox:${TAG_VERSION} geckodriver --version | awk NR1{print $2})也就是说发布脚本会先运行selenium/node-firefox:4.29.0-20250303分别执行firefox --version与geckodriver --version再用awk抽取版本号字段。这正是日志中Firefox version - 125.0.3、GeckoDriver version - 0.36.0两行的真实来源——版本信息来自镜像运行时而非脚本预设从机制上避免了版本号与实际安装产物不一致的问题。六个基础标签的拼装规则FIREFOX_TAGS数组定义了六种标签组合源码见 tag_and_push_browser_images.sh序号标签模板本次产物示例语义1{Firefox}-geckodriver-{GK}-grid-{Grid}-{Date}125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303全版本精确锁定最完整2{Firefox}-geckodriver-{GK}-{Date}125.0.3-geckodriver-0.36.0-20250303浏览器 驱动 构建日期3{Firefox}-{Date}125.0.3-20250303浏览器 构建日期4{ShortFirefox}-geckodriver-{ShortGK}-grid-{Grid}-{Date}125.0-geckodriver-0.36-grid-4.29.0-20250303短版本的全信息组合5{ShortFirefox}-geckodriver-{ShortGK}-{Date}125.0-geckodriver-0.36-20250303短版本 驱动 日期6{ShortFirefox}-{Date}125.0-20250303短版本 日期RELEASE_OLD_VERSIONtrue为什么这次没有浮动标签细心的读者会发现本次 12 个标签全部带20250303构建日期没有任何一个浮动标签如125.0.3-geckodriver-0.36.0或125.0。这与命令的第 6 个参数true直接相关。脚本中当RELEASE_OLD_VERSION为false时还会追加 4 个不带日期的浮动标签见 tag_and_push_browser_images.sh${FIREFOX_VERSION}-geckodriver-${GECKODRIVER_VERSION} # 如 125.0.3-geckodriver-0.36.0 ${FIREFOX_VERSION} # 如 125.0.3 ${FIREFOX_SHORT_VERSION}-geckodriver-${GECKODRIVER_SHORT_VERSION} # 如 125.0-geckodriver-0.36 ${FIREFOX_SHORT_VERSION} # 如 125.0而本次第 6 个参数传的是true表示这是一次旧版本Firefox 125.0.3的归档补发。归档场景下若继续更新浮动标签会覆盖当前最新版本对应的latest语义标签导致浮动标签指向旧浏览器的混乱。因此归档记录只保留带日期的确定性标签这正是该参数存在的意义。归档发布与当前发布的差异对照同一份 Firefox 125.0.3 发布记录在仓库中出现了两次归档版 与 当前版。对比可见维度归档版4.29.0当前版4.48.0Selenium Grid 版本4.29.0-202503034.48.0-20260909Firefox 版本125.0.3125.0.3GeckoDriver 版本0.36.00.37.1调用命令tag_and_push_browser_images.sh 4.29.0 20250303 selenium false firefox truetag_and_push_browser_images.sh 4.48.0 20260909 selenium false firefox true这说明 Firefox 125.0.3 镜像会被多次重发浏览器二进制保持不变但配套的 Selenium Grid Server 与 GeckoDriver 会随新版本迭代升级。选镜像时应优先看grid-段与geckodriver-段确认测试环境所依赖的驱动能力。标签背后NodeFirefox 镜像的构建逻辑标签体系能成立前提是镜像内容真实可控。NodeFirefox/Dockerfile 定义了 Firefox 镜像的构建细节Firefox 安装通过FIREFOX_VERSION构建参数控制默认latest对 125 这类旧版本会走install-firefox-package.sh从 Mozilla 官方 release 目录下载.deb或.tar.bz2包安装见 install-firefox-package.shamd64/aarch64架构分别对应x86_64/aarch64下载源语言包构建时调用 get_lang_package.sh 按FIREFOX_LANG_VERSION下载对应版本的.xpi语言包到 Firefox 的distribution/extensions目录GeckoDriver 安装GECKODRIVER_VERSION构建参数默认latest通过wget从 Mozilla geckodriver release 下载对应linux64/linux-aarch64压缩包解压到/opt/geckodriver-$GK_VERSION并软链到/usr/bin/geckodriver浏览器元信息落盘构建期把firefox、版本号与{moz:firefoxOptions: {...}}写入/opt/selenium/browsers/firefox/目录供 Selenium Grid Node 启动时读取并自动生成 config。运行链路方面NodeBase/start-selenium-node.sh 在启动 Node 时会显式注入-Dwebdriver.gecko.driver/usr/bin/geckodriver确保 Grid Node 找到与 Firefox 版本对齐的驱动。这也解释了为什么标签中Firefox 版本 GeckoDriver 版本必须成对出现——二者是运行时强绑定关系。发布编排Makefile 中的全链路仓库的 Makefile 是脚本的上游调度器负责把构建与打标签串成完整发布流程版本变量集中定义VERSION、BUILD_DATE默认取当天日期$(shell date %Y%m%d)、TAG_VERSION : $(VERSION)-$(BUILD_DATE)见 Makefile聚合目标tag_and_push_browser_images依次调用 chrome、chrome-for-testing、chromium、edge、firefox 五个浏览器分支见 Makefile其中 firefox 分支执行./tag_and_push_browser_images.sh $(VERSION) $(BUILD_DATE) $(NAMESPACE) $(PUSH_IMAGE) firefox $(RELEASE_OLD_VERSION)PUSH_IMAGE与RELEASE_OLD_VERSION均默认为false正式发版时由发布流水线如 deploy.yml显式传参归档补发时则把RELEASE_OLD_VERSION置为true——与归档文档中的命令参数完全对应。实战如何基于标签运行 Firefox 节点理解了标签生成机制后实际使用只需按发布记录挑选标签。node-firefox.md 给出了标准接入流程适用于任何 node-firefox 标签创建 Docker 网络docker network create grid启动 Hubdocker run -d -p 4442-4444:4442-4444 --net grid --name selenium-hub selenium/hub:latest启动 Firefox Node按发布记录锁定精确标签docker run -d --net grid \ -e SE_EVENT_BUS_HOSTselenium-hub \ --shm-size2g \ selenium/node-firefox:125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303将 WebDriver 测试指向http://localhost:4444即可。选标签建议日常调试可优先使用短版本标签125.0-20250303需要复现线上精确环境时使用125.0.3-geckodriver-0.36.0-grid-4.29.0-20250303这类全信息标签一次锁定浏览器、驱动、Grid 与构建日期四个维度。官方文档明确建议避免裸用latest以消除浮动标签带来的环境漂移参见 docs/docker-hub/node-firefox.md。另外注意Node 模式下通过-e SE_EVENT_BUS_HOSTselenium-hub让 Node 主动注册到 Hub本地测试还需加--shm-size2g使用宿主机共享内存避免浏览器渲染 OOM。小结一份看似只有脚本输出的归档发布记录背后串联了 docker-selenium 的完整发布工程Makefile编排构建版本 →tag_and_push_browser_images.sh动态探测镜像内浏览器/驱动版本 → 按 6 类模板加可选浮动标签批量打标签并推送 → Node 启动脚本按-Dwebdriver.gecko.driver绑定驱动路径。归档版RELEASE_OLD_VERSIONtrue的用法提醒我们补发旧浏览器时只发布带日期的确定性标签既保留历史版本的可追溯性又不污染latest语义。下次在 CI 或测试环境中挑选 node-firefox 镜像时对照 CHANGELOG 目录下对应版本的发布记录即可快速确定浏览器、驱动、Grid 三者精确对齐的镜像标签。赞分享测试后端云原生容器编排可观测性【免费下载链接】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-selenium 发布 Chrome 133 镜像标签生成机制与版本对齐实践docker selenium 发布 Chrome 133 镜像标签生成机制与版本对齐实践 导读 本文以 docker selenium 仓库中 CHANGE测试后端云原生容器编排可观测性docker-selenium 4.48.0 Firefox 108 发布解析镜像 Tag 命名体系与 GeckoDriver 版本对齐docker selenium 4.48.0 Firefox 108 发布解析镜像 Tag 命名体系与 GeckoDriver 版本对齐 本文基于 docke测试后端云原生容器编排可观测性docker-selenium Firefox 144 发布记录node-firefox / standalone-firefox 镜像标签体系与 GeckoDriver 0.37.1 版本解析实战docker selenium Firefox 144 发布记录node firefox / standalone firefox 镜像标签体系与 Gecko测试后端云原生容器编排可观测性上一篇8080模拟器按键输入怎么接Cocoa键盘事件处理完整教程下一篇poi-tl部署与运维生产环境中的最佳实践创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED

相关推荐

EcoPaste 项目实战:Trellis 本地上下文加载机制定制指南

EcoPaste 项目实战:Trellis 本地上下文加载机制定制指南

桌面应用 【免费下载链接】EcoPaste 🎉跨平台的剪贴板管理工具 | Cross-platform clipboard management tool 项目地址: https://gitcode.com/ayangweb/EcoPaste 点击查看 免费下载 导读 本文聚焦于 EcoPaste 仓库中 Trellis 工作流系统的**本地上下文…

📅 2026/10/6 2:04:43
next-shadcn-dashboard-starter 中的 React 性能优化章节体系:Vercel React Best Practices 的八类优先级分区与规则组织指南

next-shadcn-dashboard-starter 中的 React 性能优化章节体系:Vercel React Best Practices 的八类优先级分区与规则组织指南

前端UI组件 【免费下载链接】next-shadcn-dashboard-starter Free, open source, AI-friendly admin dashboard template built with Next.js 16, shadcn/ui, Tailwind CSS, and TypeScript. Production-ready tables, forms, auth, and billing. MIT licensed. 项目地址&#…

📅 2026/10/6 2:04:43
RailsAdmin Show In App 动作详解:从后台跳转前台页面与权限配置

RailsAdmin Show In App 动作详解:从后台跳转前台页面与权限配置

后端 【免费下载链接】rails_admin RailsAdmin is a Rails engine that provides an easy-to-use interface for managing your data 项目地址: https://gitcode.com/gh_mirrors/ra/rails_admin 点击查看 免费下载 本篇文章以 RailsAdmin 内置的 show_in_app 动作为…

📅 2026/10/6 2:04:43
MORE NEWS

更多资讯

📰

LEfSe分析全攻略:从原理到实操的微生物组差异筛选指南

做微生物多样性测序做得久了,你会发现一个很有意思的现象:16S扩增子或者宏基因组项目做完,OTU/ASV表和物种注释一到手,大家最想解决的问题其实就一个——到底哪些菌在组间有差异,而且这个差异靠不靠谱。过去十多年里&a…

📰

Flutter鸿蒙适配实战:json_rpc_2库双向通信改造全解析

最近把公司的 Flutter 应用向鸿蒙系统做迁移适配,整个过程里,json_rpc_2 这个三方库的鸿蒙化适配算是比较典型的一个案例。json_rpc_2 是 dart-lang 官方维护的一个 JSON-RPC 2.0 协议实现,许多 Flutter 项目拿它来做长连接双向通信、组件间调…

📰

运筹优化算法岗笔试全解析:从建模到工程实战

2017年阿里内推的算法工程师(运筹优化)笔试题,放到今天来看依然很能说明问题。那几年正是互联网公司开始认真对待运筹优化方向的时候,阿里在电商、物流、调度、定价这些场景里积累了大量的业务需求,急需能把数学建模和…

📰

ApolloAuto自动驾驶平台入门:从环境搭建到仿真Demo跑通全攻略

百度ApolloAuto这名字,在自动驾驶圈子里算是绕不开的存在。不管你是准备参加全国大学生智能汽车竞赛的百度智慧交通创意组,还是单纯想研究一套开源无人车系统到底怎么跑起来,ApolloAuto都是目前能接触到的最完整的开源自动驾驶平台之一。这篇…

📰

Android自定义LayoutManager实现卡片堆叠滑动效果

上个月接了个需求,产品经理从工位上探出头,给我发了张gif:一叠卡片像扑克牌一样摞在一起,第一张完整露出,后面的卡片只显示一截头部,整叠卡片可以上下滑动翻看,滑动过程里卡片还有轻微的缩放变化…

📰

AutoCAD零基础自学路线:从二维绘图命令到规范出图

很多人第一次打开AutoCAD,满屏的坐标轴、网格线和工具条,第一反应就是:这不就是个能精确画线的软件吗。这句话没错,但对于工科专业的人来说,它远远低估了AutoCAD真正的价值。它承载的不是“画得好看”,而是…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬