Wen*_*ger 7 google-chrome node.js docker puppeteer
我试图使用 puppeteer 截取网页的屏幕截图。当应用程序在本地运行时,屏幕截图流程工作正常,但当我尝试对我的应用程序进行 dockerize 时,屏幕截图流程会失败并出现以下错误。
无法启动浏览器,错误消息:尝试连接浏览器时 30000 毫秒后超时!只有修订版 r1069273 的 Chrome 才能保证正常工作。
以下是我在 Dockerfile 中下载并安装 chrome 和 chrome 驱动程序的方法:
RUN wget -O ./google-chrome-x64.zip "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1036826%2Fchrome-linux.zip?generation=1660863194027156&alt=media" \
&& unzip google-chrome-x64.zip -d /usr/local \
&& chmod 0755 /usr/local/chrome-linux/chrome \
&& rm google-chrome-x64.zip
# mnatching chromedriver
RUN wget -O chromedriver-x64.zip "https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1036826%2Fchromedriver_linux64.zip?generation=1660863199489297&alt=media" \
&& unzip chromedriver-x64.zip -d /usr/local \
&& chmod 0755 /usr/local/chromedriver_linux64/chromedriver \
&& rm chromedriver-x64.zip
RUN dnf install -y \
nss \
alsa-lib atk at-spi2-atk cups-libs gtk3 libdrm\
libXcomposite libXcursor libXdamage libXext libXi libXrandr libXScrnSaver libXtst \
mesa-libgbm pango \
xorg-x11-fonts-100dpi xorg-x11-fonts-75dpi xorg-x11-fonts-cyrillic \
xorg-x11-fonts-misc xorg-x11-fonts-Type1 xorg-x11-utils \
&& update-crypto-policies --set LEGACY
ENV PATH="/usr/local/chrome-linux:${PATH}"
Run Code Online (Sandbox Code Playgroud)
这就是 puppeteer 的实例化方式:
const cluster = await Cluster.launch({
concurrency: Cluster.CONCURRENCY_CONTEXT,
maxConcurrency: 3,
puppeteer,
puppeteerOptions: {
executablePath: config.chrome.path,
headless: true,
args:[
'--no-sandbox',
'--disable-dev-shm-usage',
'--disable-gpu',
'--disable-default-apps',
'--disable-extensions',
'--disable-background-networking',
'--disable-setuid-sandbox',
]
},
retryLimit: 1,
retryDelay: 30000,
timeout: 160000
});
Run Code Online (Sandbox Code Playgroud)
从错误消息来看,很明显它要求我下载最新版本或 chrome,可能还要求下载 chrome 驱动程序。但由于我对这个领域非常陌生,并且不确定如何在使用https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots时获取最新版本的 chrome 和兼容的chrome 驱动程序/ .... 网址。是的,我们继承了代码,因此对它的了解非常有限,并且维护者不再为我们的组织工作。有人可以帮我们找到以下网址的替换网址,以便我们可以下载 chrome 和 chrome 驱动程序,而 docker 文件中的其他所有内容都可以保持不变吗?
1. 替换最新版本下载地址 -> ?
当前 chrome 驱动程序下载网址: https://www.googleapis.com/download/storage/v1/b/chromium-browser-snapshots/o/Linux_x64%2F1036826%2Fchromedriver_linux64.zip ? Generation=1660863199489297&alt=media
2. 替换最新版本下载地址 -> ?
节点版本:v14.21.1 puppeteer 和 puppeteer-core 版本:19.5.2 puppeteer-cluster 版本:0.23.0
mbe*_*son -1
在 Docker 中运行 Puppeteer中有一个很好的 Dockerfile 示例。我用它来将网页打印为 pdf,效果很好
正如您在下面的摘录中看到的,第一行下载最新的 google-chrome-stable。另请参阅评论中的注释,它看起来与您的问题相关。
# Dockerfile
# 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 | apt-key add - \
&& 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 google-chrome-stable fonts-ipafont-gothic fonts-wqy-zenhei fonts-thai-tlwg fonts-kacst fonts-freefont-ttf libxss1 \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
...
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
701 次 |
最近记录: |