为何未重建Docker镜像时undetected_chromedriver会因Chrome版本报错?
问题原因分析
出现这个问题的核心是容器内的Chrome版本发生了变更,而ChromeDriver版本未同步适配,具体分两种情况:
Dockerfile未锁定Chrome版本
如果安装Chrome时用的是apt-get install google-chrome-stable这类未指定具体版本的命令,镜像构建时确实会安装当时的稳定版Chrome,但如果容器启动脚本里包含apt update && apt upgrade这类更新操作,容器每次启动都会把Chrome升级到最新稳定版。而你通过requirements.txt固定的undetected_chromedriver==3.5.5只会在镜像构建时下载对应当时Chrome版本的Driver,后续Chrome版本更新后,旧Driver自然就不匹配了。undetected_chromedriver的自动适配逻辑失效
undetected_chromedriver原本会自动检测当前Chrome版本并下载对应Driver,但如果容器运行环境限制了网络访问,或者该版本(3.5.5)对新版本Chrome的适配存在bug,就会导致它无法同步更新Driver。当Chrome被更新后,就会出现版本不兼容的报错。
需要明确:镜像本身是只读的,但容器是基于镜像的可写层运行的,如果容器内执行了更新操作,可写层里的Chrome版本会被修改——你没重建镜像,但容器里的Chrome已经不是镜像初始安装的版本了。
内容的提问来源于stack exchange,提问作者limitIntegral314
相关产品推荐
相关产品推荐

