最近有个需求,要制作某些网页渲染完成的缩略图,最后用Puppeteer完成了任务,这里记一下Docker方案,以备后用。
1. 基于Node.js镜像制作新镜像,使用国内源
Dockerfile:
1 FROM node:lts-slim 2 3 RUN sed -i 's#http://deb.debian.org#http://mirrors.cloud.tencent.com#g;s#http://security.debian.org#http://mirrors.cloud.tencent.com#g' /etc/apt/sources.list \ 4 && npm config set registry=https://registry.npmmirror.com/ \ 5 puppeteer_download_host=https://registry.npmmirror.com/-/binary显示代码
其中:http://mirrors.cloud.tencent.com 可以替换成任何一个国内debian镜像站域名(Node.js镜像是基于Debian镜像制作的)
基于taobao.org的npm镜像域名已经失效,这里使用当前(2022-10-18为止)最新域名
2. Puppeteer需要使用Chrome,但npm不会安装Chrome的依赖包,这里手动安装一下依赖包
Dockerfile:
1 RUN apt-get update \ 2 && apt-get install -y \ 3 ca-certificates \ 4 fonts-freefont-ttf \ 5 fonts-ipafont-gothic \ 6 fonts-kacst \ 7 fonts-liberation \ 8 fonts-thai-tlwg \ 9 fonts-wqy-zenhei \ 10 libappindicator3-1 \ 11 libasound2 \ 12 libatk-bridge2.0-0 \ 13 libatk1.0-0 \ 14 libc6 \ 15 libcairo2 \ 16 libcups2 \ 17 libdbus-1-3 \ 18 libexpat1 \ 19 libfontconfig1 \ 20 libgbm1 \ 21 libgcc1 \ 22 libglib2.0-0 \ 23 libgtk-3-0 \ 24 libnspr4 \ 25 libnss3 \ 26 libpango-1.0-0 \ 27 libpangocairo-1.0-0 \ 28 libstdc++6 \ 29 libx11-6 \ 30 libx11-xcb1 \ 31 libxcb1 \ 32 libxcomposite1 \ 33 libxcursor1 \ 34 libxdamage1 \ 35 libxext6 \ 36 libxfixes3 \ 37 libxi6 \ 38 libxrandr2 \ 39 libxrender1 \ 40 libxss1 \ 41 libxtst6 \ 42 lsb-release \ 43 wget \ 44 xdg-utils \ 45 # ... and curl (for health check) 46 curl \ 47 --no-install-recommends \ 48 && rm -rf /var/lib/apt/lists/*显示代码
参考:官方文档-排障(英文) 中 UNIX下无法启动无界面Chrome 和 在Docker中运行Puppeteer
官方给出的Docker方案和Dockerfile需要去谷歌服务器下载稳定版Chrome包,国内不方便使用,这里基于两部分内容进行了整合
3. Puppeteer默认需要沙盒模式,官方给出的方案是创建非root用户,由于项目其他需求,一部分组件必须使用root权限,这里在初始化Puppeteer时禁用沙盒
1 const browser = await puppeteer.launch({ 2 args: [ 3 "--no-sandbox", 4 "--disable-setuid-sandbox" 5 ], 6 });显示代码
标签:http,部署,fonts,Puppeteer,镜像,Docker,com From: https://www.cnblogs.com/Rabbitism/p/16803435.html