使用 Docker 的 Puppeteer

问题描述 投票:0回答:1

我尝试使用 Puppeteer 和 Docker 来部署应用程序,但总是遇到相同的错误:找不到浏览器:

Error: Browser was not found at the configured executablePath (/usr/bin/google-chrome-stable)
throw new Error(`Browser was not found at the configured executablePath (${launchArgs.executablePath})`);

即使我使用推荐的图像并修改浏览器路径,我仍然遇到相同的错误。 我可以做些什么来使用 Docker 部署 Puppeteer 应用程序吗? 我的应用程序包括使用 Puppeteer 生成 PDF,它是使用 NestJs 构建的。

谢谢!

我尝试在容器内安装 Chrome,引用官方 Puppeteer 镜像,使用 puppeteer-core,但我总是遇到同样的错误。即使更改可执行路径,错误也始终保持不变,始终引用“/usr/bin/google-chrome-stable”。

Dockerfile:

# Base image
FROM ghcr.io/puppeteer/puppeteer:23.3.0

# Create app directory
WORKDIR /app

# A wildcard is used to ensure both package.json AND package-lock.json are copied
COPY package*.json ./

# Install app dependencies
RUN npm install

# Bundle app source
COPY . .

EXPOSE 4001
# Start the server using the production build
CMD ["npm", "run", "start:prod"]

浏览器服务单例:

  async onModuleInit() {
    const browserConfigs = {
      headless: true,
      args: ['--no-sandbox', '--disable-setuid-sandbox'],
      browser: 'chrome',
    } as puppeteer.PuppeteerLaunchOptions;

    if (this.profile !== 'development') {
      browserConfigs.executablePath = '/usr/bin/google-chrome-stable)';
    }

    this.browser = await puppeteer.launch(browserConfigs);
    this.page = await this.browser.newPage();
    this.page.setDefaultTimeout(0);
    this.page.setDefaultNavigationTimeout(0);
  }

傀儡师版本:23.3.0

docker dockerfile puppeteer
1个回答
0
投票

发生这种情况是因为 puppeteer docker 镜像中没有 google-chrome-stable。要获取浏览器可执行文件,您只需使用如下所示的 Nodejs 脚本即可。

console.log(require('puppeteer').executablePath())

您可以按照他们的文档

对官方 docker 映像执行相同的操作
docker run -i --init --cap-add=SYS_ADMIN --rm \
 ghcr.io/puppeteer/puppeteer:latest \
 node -e "console.log(require('puppeteer').executablePath())"

这将打印如下所示的位置,

/home/pptruser/.cache/puppeteer/chrome/linux-131.0.6778.85/chrome-linux64/chrome

使用官方 docker 镜像时无需提供任何特定的可执行路径。它已经安装在那里了。

© www.soinside.com 2019 - 2024. All rights reserved.