如何在Docker及Ubuntu生产环境中使用Headless Chrome?
解决Docker及Ubuntu 22.04环境下Headless Chrome转PDF的问题
一、Docker环境(Ubuntu 22.04镜像)
Docker容器默认无法运行snap服务,别尝试用snap安装Chromium,直接安装Deb包版本即可:
- 修改Dockerfile,替换默认源并安装非snap版Chromium:
FROM ubuntu:22.04 RUN apt-get update && apt-get install -y --no-install-recommends \ software-properties-common \ gnupg2 \ && add-apt-repository ppa:linuxuprising/chromium \ && apt-get update && apt-get install -y --no-install-recommends \ chromium-browser \ libnss3 \ libx11-xcb1 \ libxcb-dri3-0 \ libgbm1 \ fonts-liberation \ && rm -rf /var/lib/apt/lists/*
这个PPA提供的是非snap格式的Chromium Deb包,会替换系统默认的snap链接。
- 调整PHP代码中的浏览器启动参数,添加Docker环境必需的配置:
$browser = (new BrowserFactory('chromium-browser'))->createBrowser([ 'windowSize' => [1920, 1080], 'arguments' => [ '--headless=new', // 新版无头模式,兼容性更强 '--no-sandbox', // Docker环境必须禁用沙箱,否则启动失败 '--disable-dev-shm-usage', // 解决容器内共享内存不足问题 '--disable-gpu', '--no-first-run', '--no-default-browser-check', ] ]); $page = $browser->createPage(); $page->setHtml($html); return base64_decode( $page->pdf([ 'printBackground' => true ])->getBase64() );
二、无Docker的Ubuntu 22.04生产环境
两种方案任选:
方案1:通过snap安装Chromium
先修复snap服务环境:
- 安装snapd:
sudo apt update && sudo apt install -y snapd
- 启动并设置snapd开机自启:
sudo systemctl enable --now snapd.socket sudo systemctl start snapd
- 安装Chromium:
sudo snap install chromium
安装完成后即可正常运行原有代码,若使用无头模式,记得保留--headless=new这类参数。
方案2:安装Deb版Chromium(避开snap)
和Docker环境步骤类似,通过PPA安装非snap版本:
- 安装依赖并添加PPA:
sudo apt update && sudo apt install -y software-properties-common sudo add-apt-repository ppa:linuxuprising/chromium
- 安装Chromium:
sudo apt update && sudo apt install -y chromium-browser
这种方式无需依赖snapd,直接用系统apt包管理即可。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

