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

无法为Puppeteer创建Docker镜像的问题咨询

解决Puppeteer官方Dockerfile构建时缺少tgz包的问题

问题描述

尝试使用Puppeteer官方提供的Dockerfile创建镜像时,因本地缺少puppeteer-browsers-latest.tgz、puppeteer-latest.tgz、puppeteer-core-latest.tgz三个文件导致构建失败。自行尝试在Puppeteer模块内运行npm pack生成tgz时,先后遇到wireit未识别和cp未识别的错误。

两种可行解决方案

方案一:修改Dockerfile,直接从npm安装(推荐)

官方Dockerfile中的本地tgz包是团队内部发布镜像时使用的预构建包,普通用户无需依赖本地文件,直接从npm官方源安装即可,步骤如下:

  1. 修改原Dockerfile,删除以下行:
COPY puppeteer-browsers-latest.tgz puppeteer-latest.tgz puppeteer-core-latest.tgz ./
  1. 将原有的安装命令替换为从npm直接安装:
RUN npm install puppeteer puppeteer-core @puppeteer/browsers \
    && (node -e "require('child_process').execSync(require('puppeteer').executablePath() + ' --credits', {stdio: 'inherit'})" > THIRD_PARTY_NOTICES)

修改后的完整Dockerfile如下:

FROM node:18

# Install latest chrome dev package and fonts to support major charsets (Chinese, Japanese, Arabic, Hebrew, Thai and a few others)
# Note: this installs the necessary libs to make the bundled version of Chromium that Puppeteer
# installs, work.
RUN apt-get update \
    && apt-get install -y wget gnupg \
    && wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | gpg --dearmor -o /usr/share/keyrings/googlechrome-linux-keyring.gpg \
    && sh -c 'echo "deb [arch=amd64 signed-by=/usr/share/keyrings/googlechrome-linux-keyring.gpg] http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google.list' \
    && apt-get update \
    && apt-get install -y google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-khmeros fonts-kacst fonts-freefont-ttf libxss1 \
      --no-install-recommends \
    && rm -rf /var/lib/apt/lists/* \
    && groupadd -r pptruser && useradd -rm -g pptruser -G audio,video pptruser

USER pptruser

WORKDIR /home/pptruser

# Install @puppeteer/browsers, puppeteer and puppeteer-core from npm
RUN npm install puppeteer puppeteer-core @puppeteer/browsers \
    && (node -e "require('child_process').execSync(require('puppeteer').executablePath() + ' --credits', {stdio: 'inherit'})" > THIRD_PARTY_NOTICES)

CMD ["google-chrome-stable"]
  1. 重新执行docker build命令即可完成镜像构建。

方案二:正确生成所需的tgz包(适合需要本地构建包的场景)

如果必须使用本地tgz包,需注意Puppeteer是monorepo结构,需按以下步骤操作(推荐在Linux/macOS或WSL环境下执行,避免Windows命令兼容问题):

  • 克隆Puppeteer官方仓库,进入仓库根目录
  • 安装所有依赖:npm install
  • 运行项目构建命令:npm run build(此命令会通过wireit完成所有子包的编译构建)
  • 分别进入packages/puppeteer、packages/puppeteer-core、packages/puppeteer-browsers目录,执行npm pack命令,生成对应的tgz文件
  • 将生成的三个tgz文件复制到Docker构建目录,并分别重命名为puppeteer-latest.tgz、puppeteer-core-latest.tgz、puppeteer-browsers-latest.tgz
  • 执行原Dockerfile的docker build命令即可构建镜像

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 08:05:41