Docker 节点:Alpine-12:如何在 Dockerfile 中安装 Chromium 73?

Dai*_*ung 10 chromium node.js docker alpine-linux puppeteer

因为我想运行 Puppeteer@1.19 但在 page.pdf() 中遇到错误。

刚刚提到的一些 blob 将 Chromium 从版本 76 降级到 73。如何使用 node:alpine-12 在 Dockerfile 中做到这一点?谢谢

以下是我的设置(铬版本为 76):

FROM node:12-alpine
########## 
## Setting for using Puppeteer (for using node:XX-alpine)
##########    
ENV CHROME_BIN="/usr/bin/chromium-browser"\
    PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
########## 
## Update and Install packages
##########
RUN set -x \
    && apk update \
    && apk upgrade \
    && echo "127.0.0.1 localhost" >> /etc/hosts \
    && echo "http://dl-cdn.alpinelinux.org/alpine/edge/testing" > /etc/apk/repositories \
    && echo "http://dl-cdn.alpinelinux.org/alpine/edge/community" >> /etc/apk/repositories \
    && echo "http://dl-cdn.alpinelinux.org/alpine/edge/main" >> /etc/apk/repositories \
    # add the packages
    ## g++: used to install NodeJS related packages
    ## chromium: used to run Puppeteer
    && apk add --no-cache g++ chromium 
Run Code Online (Sandbox Code Playgroud)

试图将最后一行更改chromiumchromium-browser@73chromium@73但面临以下错误:

世界依赖“chromium@73”的存储库标签不存在

仅供参考,我刚刚安装chromium并在 NodeJS 代码下运行时出错:

Line239: await page.pdf({
            path: TEMP_DIR + filename, 
            format: 'A4',
            printBackground: true
         });
Run Code Online (Sandbox Code Playgroud)

printPdf() 错误
错误:协议错误 (IO.read):无效的参数句柄:  在 CDPSession 的  new Promise ()处应
 为 /usr/src/app/node_modules/puppeteer/lib/Connection.js:183:56
处的字符串值

 在 Function.readProtocolStream (/usr/src/app/node_modules/puppeteer/lib/helper.js:241:37)
 处发送 (/usr/src/app/node_modules/puppeteer/lib/Connection.js:182:12) async Page.pdf (/usr/src/app/node_modules/puppeteer/lib/Page.js:988:12)
 at async printPdf (/usr/src/app/puppeteer.js:239:9)
 at async /usr/ src/app/puppeteer.js:129:
 21——异步——
 在页面。(/usr/src/app/node_modules/puppeteer/lib/helper.js:111:15)
 在 printPdf (/usr/src/app/puppeteer.js:239:20)
 at processTicksAndRejections (internal/process/task_queues.js:85:5)
 at async /usr/src/app/puppeteer.js:129:21 {消息:'协议错误(IO.read):无效的参数句柄:预期的字符串值'
}

Adi*_*iii 11

在 nodejs 基础图像中使用的边缘分支中不存在chromium73。您必须将分支设置为 v3.10 才能下载chromium73。

高山铬&分支=v3.10

FROM node:12-alpine
RUN apk add --no-cache  chromium --repository=http://dl-cdn.alpinelinux.org/alpine/v3.10/main
Run Code Online (Sandbox Code Playgroud)

验证安装

docker run -it --rm myalpine ash -c "apk -e info chromium"

  • 现在 v3.10 中可用的 chromium 版本是 77.0.3865.120 (2认同)