クロムヘッドレスのあるアルパインドッカーの人形劇が動作しないようです。

クロムヘッドレスのあるアルパインドッカーの人形劇が動作しないようです。

私はbashスクリプトでpageresを使ってherukoからスクリーンショットを撮ろうとしています。しかし走っているペレスalpine:latest人形劇のエラーが発生します。

at onClose (/usr/local/lib/node_modules/pageres-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:193:20)
at ChildProcess(/usr/local/lib/node_modules/pageres-cli/node_modules/puppeteer/lib/cjs/puppeteer/node/BrowserRunner.js:184:79)

私はトラブルシューティングのマニュアルに従いました。人形マスターの子私のdockerfileに次の行を追加しました。


# Installs latest Chromium (92) package.
RUN apk add --no-cache \
      chromium \
      nss \
      freetype \
      harfbuzz \
      ca-certificates \
      ttf-freefont \
      nodejs \
      yarn

# Tell Puppeteer to skip installing Chrome. We'll be using the installed package.
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser

# Puppeteer v10.0.0 works with Chromium 92.
RUN yarn add [email protected]

# Add user so we don't need --no-sandbox.
RUN addgroup -S pptruser && adduser -S -G pptruser pptruser \
    && mkdir -p /home/pptruser/Downloads /app \
    && chown -R pptruser:pptruser /home/pptruser \
    && chown -R pptruser:pptruser /app

また、ヘッドレスモードでFirefoxを使用してスクリーンショットをキャプチャしてみましたが、やはりエラーが発生しました...

*** You are running in headless mode.
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libpci missing (t=0.323898) [GFX1-]: glxtest: libpci missing
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libpci missing (t=0.323898) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.32393) [GFX1-]: glxtest: libGL.so.1 missing
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libpci missing (t=0.323898) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.32393) |[2][GFX1-]: glxtest: libEGL missing (t=0.323941) [GFX1-]: glxtest: libEGL missing
Crash Annotation GraphicsCriticalError: |[0][GFX1-]: glxtest: libpci missing (t=0.323898) |[1][GFX1-]: glxtest: libGL.so.1 missing (t=0.32393) |[2][GFX1-]: glxtest: libEGL missing (t=0.323941) |[3][GFX1-]: No GPUs detected via PCI (t=0.323959) [GFX1-]: No GPUs detected via PCI

しかし、残念ながら何も動作しません。解決策やより良い方法はありますか?

Chromium バージョン - 93.0.4577.82, Firefox バージョン - 94.0, Puppeteer バージョン - 10.0.0

ベストアンサー1

これは私にとって効果的です。あなたもそれを試してみて、それがあなたにも効果があるかどうかを教えてください。

FROM node:17-alpine
ENV CHROME_BIN="/usr/bin/chromium-browser" \
    PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
RUN set -x \
    && apk update \
    && apk upgrade \
    && apk add --no-cache \
    udev \
    ttf-freefont \
    chromium \
    && npm install puppeteer

NodeJでの使い方

  const browser = await puppeteer.launch({
    headless: true,
    executablePath: '/usr/bin/chromium-browser',
    args: [
      '--no-sandbox',
      '--headless',
      '--disable-gpu',
      '--disable-dev-shm-usage'
    ]
  })

おすすめ記事