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

在Node Docker容器中运行Puppeteer时Chromium找不到的问题排查

Node.js Puppeteer在Azure App Service Docker容器中找不到Chromium的问题

本地MAC OS环境运行正常,但部署到Azure App Service的Docker容器后,触发Puppeteer时出现以下错误:

Error: Could not find Chromium (rev. 1069273). This can occur if
either
1. you did not perform an
installation before running the script (e.g. `npm install`) or
2. your cache path is incorrectly
configured (which is: /root/.cache/puppeteer).
For (2), check out our guide on
configuring puppeteer at https://pptr.dev/guides/configuration.

提供的配置文件

Dockerfile

FROM node:slim

ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD true

# INSTALL PUPPETEER DEPENDENCIES
RUN apt-get update && apt-get install gnupg wget chromium -y && \
  wget --quiet --output-document=- https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg && \
  sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' && \
  apt-get update && \
  apt-get install google-chrome-stable -y --no-install-recommends && \
  rm -rf /var/lib/apt/lists/*

COPY ./backend/ .

RUN npm install

CMD ["npm", "start"]

路由代码

import puppeteer from 'puppeteer';
...
const browser = await puppeteer.launch({
    headless: true,
    ignoreHTTPSErrors: true,
    executablePath: '/usr/bin/google-chrome'
})

package.json

"dependencies": {
    ...
    "puppeteer": "^19.4.1",
}

问题原因及修复方案

核心问题

虽然通过PUPPETEER_SKIP_CHROMIUM_DOWNLOAD跳过了Puppeteer自带Chromium的下载,也手动安装了google-chrome-stable,但Puppeteer仍在尝试查找它预期版本的Chromium(1069273),而非使用你手动安装的Chrome。此外还有两处关键问题:

  • 安装了冗余的chromium包,且指定的executablePath可能与实际Chrome路径不匹配
  • Puppeteer版本与手动安装的Chrome版本不兼容,导致Puppeteer无法识别该Chrome实例

具体修复步骤

1. 修正Dockerfile,清理冗余依赖并配置环境变量

修改Dockerfile,移除多余的chromium安装,通过环境变量指定Chrome路径,同时优化依赖安装:

FROM node:slim

# 跳过Puppeteer自带Chromium下载,指定手动安装的Chrome路径
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
ENV PUPPETEER_EXECUTABLE_PATH=/usr/bin/google-chrome-stable

# 安装Chrome依赖及稳定版Chrome
RUN apt-get update && apt-get install -y --no-install-recommends \
    ca-certificates \
    wget \
    gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /etc/apt/trusted.gpg.d/google.gpg \
    && sh -c 'echo "deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y --no-install-recommends google-chrome-stable \
    && apt-get purge -y --auto-remove wget gnupg \
    && rm -rf /var/lib/apt/lists/*

COPY ./backend/ .

RUN npm install

CMD ["npm", "start"]

2. 调整Puppeteer启动配置

移除手动指定的executablePath,改用环境变量配置,同时添加容器环境必需的启动参数:

import puppeteer from 'puppeteer';
...
const browser = await puppeteer.launch({
    headless: 'new', // Puppeteer 19+推荐使用新无头模式
    ignoreHTTPSErrors: true,
    args: [
        '--no-sandbox',
        '--disable-setuid-sandbox',
        '--disable-dev-shm-usage', // 解决容器内存不足问题
        '--disable-gpu' // 无GPU环境禁用
    ]
})

3. 确保Puppeteer与Chrome版本兼容

Puppeteer 19.4.1对应Chromium版本为106.x,而google-chrome-stable默认安装最新稳定版,版本不匹配会导致识别失败。可通过以下方式解决:

  • 查询Puppeteer 19.4.1对应的Chrome版本,安装对应版本的Chrome
  • 升级Puppeteer到最新版本,确保与安装的Chrome版本兼容

额外注意事项

  • Azure App Service容器环境必须启用无沙箱模式,因此启动参数中必须包含--no-sandbox和--disable-setuid-sandbox
  • 添加--disable-dev-shm-usage可避免容器中共享内存空间不足导致Chrome崩溃

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 04:20:31