You need to enable JavaScript to run this app. 构建可运行OpenJDK 15及带Chromedriver的Selenium的Dockerfile的基础镜像及示例参考
优惠活动
大模型
产品
解决方案
定价
更多

构建可运行OpenJDK 15及带Chromedriver的Selenium的Dockerfile的基础镜像及示例参考

可选用的基础镜像方向
  • 优先选Debian/Ubuntu衍生版的Eclipse Temurin OpenJDK 15官方镜像,规避Alpine变体下Chromium适配性差、依赖排查成本高的问题
  • 可复用Selenium项目官方维护的预置浏览器基础镜像分支,这类镜像已经预配置好Chromium、Chromedriver和相关运行依赖,后续只需要替换适配版本的OpenJDK 15运行时,能大幅减少依赖排查的工作量
可直接参考的Dockerfile构建示例

注意:镜像内安装的Chromium与Chromedriver版本必须严格匹配,否则会直接触发Selenium会话创建失败错误

# 基于Jammy Ubuntu版OpenJDK15基础镜像搭建
FROM eclipse-temurin:15-jdk-jammy

# 关闭安装过程的交互提示,避免构建卡死
ENV DEBIAN_FRONTEND=noninteractive

# 安装Chromium浏览器、匹配版本的Chromedriver以及运行所需的系统依赖
RUN apt-get update && apt-get install -y \
    chromium-browser \
    chromium-chromedriver \
    fonts-liberation \
    libnss3 \
    libasound2 \
    libappindicator3-1 \
    xdg-utils \
    # 清理安装缓存缩小镜像体积
    && apt-get clean \
    && rm -rf /var/lib/apt/lists/*

# 将Chromedriver路径加入全局环境变量
ENV PATH="$PATH:/usr/lib/chromium-browser/chromedriver"

# 预置容器无GUI环境下的Chrome启动参数,供业务代码直接读取使用
ENV CHROME_LAUNCH_ARGS="--no-sandbox --disable-dev-shm-usage --headless=new"
构建与运行的关键注意事项
  • 不要使用Alpine体系的OpenJDK15镜像搭建该类环境:Chromium在Alpine下需要额外配置大量兼容层,不仅镜像体积更大,还容易出现无明确报错的随机崩溃问题
  • Debian/Ubuntu软件源内的chromium-browser与chromium-chromedriver默认是版本强绑定的,手动从官方渠道下载二进制包时必须逐主版本核对,否则会直接触发Selenium的session not created类报错
  • 容器内启动Chrome必须携带两个核心参数:--no-sandbox解决容器非root身份运行浏览器的权限冲突,--disable-dev-shm-usage解决容器默认共享内存过小导致的浏览器崩溃问题
  • 无需在镜像层面单独安装Selenium的Java依赖,这类依赖会随业务项目的可执行Jar包一同打包传入,镜像只需要保证OpenJDK运行时、浏览器、Chromedriver三者版本适配即可
  • 如果需要保证构建可复现,建议在apt安装时指定对应软件版本号,避免软件源内的包自动升级导致的驱动和浏览器版本不匹配问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.12 04:54:01