后记
本文发布于2017年8月8日,已过时。
当前(截至2019年2月4日),官方存储库显示了如何使用Docker运行它,因此我认为最好参考它。
- GoogleChrome / puppeteer?问题排查?在Docker中运行Puppeteer
介绍
最近,我沉迷于触摸木偶戏。这是一个库,可让您通过Node.js使用Headless Chrome。我以为,如果可以在Docker容器上运行此Puppeteer,则可以在各种环境中运行浏览器,这将很方便,所以我尝试了一下。
方法
官方存储库假定在Docker容器上运行Google Chrome / puppeteer的README.md中的示例程序的经过稍微编辑的版本。将
首先,准备一个示例程序,并仅更改
script.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: [ '--no-sandbox', '--disable-setuid-sandbox' ] }); const page = await browser.newPage(); await page.goto('https://example.com'); await page.screenshot({ path: 'example.png' }); browser.close(); })(); |
接下来,准备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | FROM node:8.4.0 RUN apt-get update \ && apt-get install -y \ gconf-service \ libasound2 \ libatk1.0-0 \ libc6 \ libcairo2 \ libcups2 \ libdbus-1-3 \ libexpat1 \ libfontconfig1 \ libgcc1 \ libgconf-2-4 \ libgdk-pixbuf2.0-0 \ libglib2.0-0 \ libgtk-3-0 \ libnspr4 \ libpango-1.0-0 \ libpangocairo-1.0-0 \ libstdc++6 \ libx11-6 \ libx11-xcb1 \ libxcb1 \ libxcomposite1 \ libxcursor1 \ libxdamage1 \ libxext6 \ libxfixes3 \ libxi6 \ libxrandr2 \ libxrender1 \ libxss1 \ libxtst6 \ ca-certificates \ fonts-liberation \ libappindicator1 \ libnss3 \ lsb-release \ xdg-utils \ wget WORKDIR /app RUN npm i puppeteer COPY ./script.js . ENTRYPOINT ["node", "/app/script.js"] |
对于
之后,执行
1 2 3 | $ docker build -t puppeteer . $ docker run --rm -it -v $(pwd):/opt/data-volume -w /opt/data-volume puppeteer $ open example.png |
参考
- Puppeteer?故障排除
- Puppeteer?问题#290?Chrome Headless无法在Debian上启动