Docker容器中Selenium Chrome Driver异常退出(状态码255)求助
解决Docker中ChromeDriver意外退出(状态码255)的问题
核心原因
你使用的python:3.11.4-slim是轻量镜像,缺少Chrome浏览器本体,同时缺失Chrome运行必需的系统依赖库,另外WebDriver的部分参数在容器环境下不适用,导致驱动启动失败。
修复步骤
1. 更新Dockerfile,安装Chrome及系统依赖
在镜像中补充安装Chrome浏览器和必要的系统库,确保Chrome能在容器环境正常运行:
FROM python:3.11.4-slim WORKDIR /app # 安装系统依赖与Chrome浏览器 RUN apt-get update && apt-get install -y --no-install-recommends \ chromium \ chromium-driver \ libglib2.0-0 \ libnss3 \ libgconf-2-4 \ libfontconfig1 \ && rm -rf /var/lib/apt/lists/* COPY elasticModule.py /app/elasticModule.py COPY slackMessage.py /app/slackMessage.py COPY elasticMain.py /app/elasticMain.py COPY requirements.txt /app/requirements.txt RUN pip install -r requirements.txt CMD ["python", "elasticMain.py"]
2. 调整WebDriver初始化参数
移除容器环境下无用的detach参数,添加解决容器共享内存不足的配置,同时直接使用系统安装的chromedriver(无需通过ChromeDriverManager下载):
from selenium import webdriver from selenium.webdriver.chrome.options import Options options = Options() # 移除detach参数,容器环境不需要维持浏览器进程脱离 options.add_argument("--headless=new") # 使用新版无头模式,兼容性更优 options.add_argument("--no-sandbox") options.add_argument("--disable-gpu") options.add_argument("--disable-dev-shm-usage") # 解决容器/dev/shm空间不足问题 # 直接调用系统安装的chromedriver,默认路径为/usr/bin/chromedriver driver = webdriver.Chrome(options=options) driver.get(url)
3. 确认依赖版本兼容性
确保requirements.txt中的selenium版本(建议用4.x以上)与安装的Chrome版本匹配,避免版本不兼容引发的启动异常。
内容的提问来源于stack exchange,提问作者HanHyeonBIn
相关产品推荐
相关产品推荐

