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

Docker部署Puppeteer+Express API报错:浏览器进程启动失败

问题解决:Docker容器中Puppeteer启动浏览器失败

问题原因

Node官方镜像未预装Chrome/Chromium运行所需的系统依赖库,Puppeteer自带的Chromium无法找到libnss3.so等必要文件,导致启动失败。

解决方案

1. 修改Dockerfile,安装系统依赖

更新Dockerfile,在安装npm依赖前先安装Chromium运行所需的系统库:

FROM node:18-slim
WORKDIR /app
# 安装Chromium依赖
RUN apt-get update && apt-get install -y \
    libnss3 \
    libatk1.0-0 \
    libatk-bridge2.0-0 \
    libcups2 \
    libdrm2 \
    libxkbcommon0 \
    libxcomposite1 \
    libxdamage1 \
    libxrandr2 \
    libgbm1 \
    libgtk-3-0 \
    libasound2 \
    && rm -rf /var/lib/apt/lists/*
COPY . .
RUN npm install
CMD ["npm", "start"]

说明:使用node:slim镜像比默认node镜像体积更小,同时安装所有Chrome运行必需的依赖库,避免缺失单个文件的问题。

2. 调整Puppeteer启动参数

在你的Express API代码中,启动浏览器时必须添加无沙箱参数(容器环境下无法使用Chrome沙箱):

const browser = await puppeteer.launch({
  args: [
    '--no-sandbox',
    '--disable-setuid-sandbox'
  ]
});

3. 可选:使用系统Chromium替代Puppeteer自带版本

如果不想下载Puppeteer自带的Chromium,可以在安装npm依赖时跳过下载,直接使用容器中安装的Chromium:

  • 在Dockerfile中添加安装Chromium的命令:
    RUN apt-get install -y chromium
    
  • 添加环境变量跳过Puppeteer的Chromium下载:
    ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
    ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium
    

验证修改

重新构建镜像并启动容器:

docker-compose down && docker-compose up --build

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 04:03:05