arm64架构AmazonLinux2 Docker部署Chrome及ChromeDriver方案
我习惯先说明问题的排查背景,若您仅关注核心问题可直接跳至文末!
背景说明(供感兴趣的读者参考)
我搭建了基于amazonlinux:2的Docker环境,在其中通过chromedriver运行自动化测试,该环境在更换为M1芯片的MacBook前一直运行正常。更换设备后,无论使用跨架构编译的Docker容器,还是原生arm64架构编译的Docker容器,都无法正常运行如下测试脚本:
import time from selenium import webdriver options = webdriver.ChromeOptions() options.add_argument('headless') options.add_argument('--no-sandbox') options.add_argument('--disable-gpu') options.add_argument('--disable-extensions') options.add_argument('--disable-dev-shm-usage') options.add_argument('--fullscreen') options.add_argument('--remote-debugging-port=9222') options.binary_location = '/usr/local/bin/chromedriver' driver = webdriver.Chrome(chrome_options=options, service_args=["--verbose", "--log-path=/opt/chromedriver.log"]) driver.get('http://www.google.com/') time.sleep(5) # 等待页面加载 search_box = driver.find_element_by_name('q') search_box.send_keys('ChromeDriver') search_box.submit() time.sleep(5) # 等待搜索结果加载 driver.quit()
两种编译方式分别遇到不同问题:
- 添加
--platform=linux/amd64参数跨架构编译容器时,脚本直接崩溃:跨架构环境下Chrome与chromedriver存在兼容问题,始终无法正常启动。 - 不添加
--platform参数原生编译amazonlinux:2镜像时,arm64架构下CentOS7没有可用的官方Chrome安装包。
当前排查进展
我尝试自行编译Chromium集成到镜像中替代官方Chrome包,最初按照Linux Chromium Arm编译指南操作,后续跟进Chromium官方构建说明的拉取代码步骤,但执行如下命令时直接报错:
$ fetch --nohooks chromium
核心报错信息如下:
bootstrap-2@3.8.10.chromium.23_bin/python3/bin/python3: /lib64/libc.so.6: version `GLIBC_2.27' not found (required by bootstrap-2@3.8.10.chromium.23_bin/python3/bin/python3) cat: /opt/depot_tools/python3_bin_reldir.txt: No such file or directory [E2022-06-15T15:13:00.163840Z 717 0 annotate.go:273] goroutine 1: #0 go.chromium.org/luci/vpython/venv/config.go:309 - venv.(*Config).resolvePythonInterpreter() reason: none of [/opt/depot_tools//python3] matched specification 3.8.0 #1 go.chromium.org/luci/vpython/venv/config.go:153 - venv.(*Config).resolveRuntime() reason: failed to resolve system Python interpreter #2 go.chromium.org/luci/vpython/venv/venv.go:143 - venv.With() reason: failed to resolve python runtime #3 go.chromium.org/luci/vpython/run.go:60 - vpython.Run() #4 go.chromium.org/luci/vpython/application/application.go:327 - application.(*application).mainImpl() #5 go.chromium.org/luci/vpython/application/application.go:416 - application.(*Config).Main.func1() #6 go.chromium.org/luci/vpython/application/support.go:46 - application.run() #7 go.chromium.org/luci/vpython/application/application.go:415 - application.(*Config).Main() #8 vpython/main.go:112 - main.mainImpl() #9 vpython/main.go:118 - main.main() #10 runtime/proc.go:225 - runtime.main() #11 runtime/asm_arm64.s:1130 - runtime.goexit()
报错提示系统缺少GLIBC_2.27版本依赖,我不希望替换系统核心类库,因此自行编译Chromium的方案无法推进。
待解决问题
如何在基于CentOS7的amazonlinux:2 Docker镜像(arm64/aarch64架构)中,成功部署并运行Chrome/Chromium及配套的chromedriver?
内容的提问来源于stack exchange,提问作者Niklas Möller
相关产品推荐
相关产品推荐

