Dai*_*ung 2 chromium node.js docker alpine-linux puppeteer
Alpine 于 80 月 8 日支持 Chromium v77。
参考:https : //pkgs.alpinelinux.org/packages?name=chromium&branch=edge
尝试复制下载 Chromium v77 并运行 Puppeteer v1.20 的步骤,但在运行时出现错误:
Error for printPdf()
{}
Error: Failed to launch chrome!
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1118basic_stringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt7__cxx1119basic_ostringstreamIcSt11char_traitsIcESaIcEEC1Ev: symbol not found
Error relocating /usr/lib/chromium/chrome: hb_subset_input_set_retain_gids: symbol not found
Error relocating /usr/lib/chromium/chrome: _ZNSt19_Sp_make_shared_tag5_S_eqERKSt9type_info: symbol not found
TROUBLESHOOTING: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md
at onClose (/usr/src/app/node_modules/puppeteer/lib/Launcher.js:348:14)
at Interface.<anonymous> (/usr/src/app/node_modules/puppeteer/lib/Launcher.js:337:50)
at Interface.emit (events.js:214:15)
at Interface.close (readline.js:403:8)
at Socket.onend (readline.js:180:10)
at Socket.emit (events.js:214:15)
at endReadableNT (_stream_readable.js:1178:12)
at processTicksAndRejections (internal/process/task_queues.js:77:11)
Run Code Online (Sandbox Code Playgroud)
Dockerfile:
FROM node:12-alpine
ENV CHROME_BIN="/usr/bin/chromium-browser"\
PUPPETEER_SKIP_CHROMIUM_DOWNLOAD="true"
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 \
&& apk add --no-cache g++ chromium \
&& npm install puppeteer@1.20.0 puppeteer-core@1.20.0
...
Run Code Online (Sandbox Code Playgroud)
我认为问题出在您的安装上。您可以尝试将此作为基本图像。
FROM zenika/alpine-chrome:77-with-node
ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true
RUN npm install puppeteer@1.20.0 puppeteer-core@1.20.0
COPY my_script.js /usr/src/app/
CMD ["node","my_script.js"]
Run Code Online (Sandbox Code Playgroud)
my_script.js 测试代码
const puppeteer = require('puppeteer');
(async () => {
const browser =await puppeteer.launch({
executablePath: '/usr/bin/chromium-browser',
args: ['--no-sandbox', '--headless', '--disable-gpu']
});
const page = await browser.newPage();
await page.goto('https://news.ycombinator.com', {waitUntil: 'networkidle2'});
await page.pdf({path: 'hn.pdf', format: 'A4'});
await browser.close();
})();
Run Code Online (Sandbox Code Playgroud)
如果您想从 sractch 构建,那么您可以使用此Dockerfile并根据需要进行修改。
| 归档时间: |
|
| 查看次数: |
2869 次 |
| 最近记录: |