You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker容器中使用llama_index.WholeSiteReader遇SessionNotCreatedException

解决Docker容器中使用WholeSiteReader的SessionNotCreatedException问题

问题根源

Docker容器默认是无GUI环境,Chrome启动需要桌面支持,且默认配置未适配容器环境,导致DevToolsActivePort文件不存在、Chrome进程异常退出。另外需确保Chrome与chromedriver版本严格匹配,否则也会引发兼容性问题。

解决步骤

1. 在Docker镜像中安装Chrome、chromedriver及依赖

以下是Dockerfile片段,以Python镜像为基础:

# 基础镜像
FROM python:3.10-slim

# 安装Chrome运行依赖
RUN apt-get update && apt-get install -y \
    wget \
    gnupg \
    libnss3 \
    libgconf-2-4 \
    libxss1 \
    libasound2 \
    fonts-liberation \
    libappindicator3-1 \
    xdg-utils \
    && rm -rf /var/lib/apt/lists/*

# 安装Chrome稳定版
RUN wget -q -O - https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \
    && echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list \
    && apt-get update && apt-get install -y google-chrome-stable

# 安装对应版本的chromedriver
RUN CHROME_VERSION=$(google-chrome --version | grep -oP '\d+\.\d+\.\d+\.\d+') \
    && wget -O /tmp/chromedriver.zip https://storage.googleapis.com/chrome-for-testing-public/$CHROME_VERSION/linux64/chromedriver-linux64.zip \
    && unzip /tmp/chromedriver.zip -d /usr/local/bin/ \
    && chmod +x /usr/local/bin/chromedriver-linux64/chromedriver \
    && ln -s /usr/local/bin/chromedriver-linux64/chromedriver /usr/bin/chromedriver

2. 手动配置Chrome选项并传入WholeSiteReader

默认的setup_driver方法未添加容器环境所需的Chrome参数,需手动创建带适配选项的WebDriver,再传给WholeSiteReader:

from llama_index.readers.web import WholeSiteReader
from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def get_chrome_driver():
    chrome_options = Options()
    # 无头模式,无需GUI
    chrome_options.add_argument("--headless=new")
    # 禁用沙箱,容器环境必需
    chrome_options.add_argument("--no-sandbox")
    # 禁用/dev/shm使用,避免容器内存限制问题
    chrome_options.add_argument("--disable-dev-shm-usage")
    # 指定临时目录,解决DevToolsActivePort问题
    chrome_options.add_argument("--user-data-dir=/tmp/chrome-user-data")
    # 禁用GPU加速
    chrome_options.add_argument("--disable-gpu")
    
    return webdriver.Chrome(options=chrome_options)

# 传入自定义driver初始化WholeSiteReader
driver = get_chrome_driver()
test = WholeSiteReader(prefix="https://suryaanshrai.blogspot.com/", driver=driver)

3. 验证版本匹配

执行以下命令确认Chrome与chromedriver版本一致:

google-chrome --version
chromedriver --version

若版本不匹配,重新安装对应版本的chromedriver。

内容的提问来源于stack exchange,提问作者Suryaansh Rai

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 10:11:15