首页 > 其他分享 >关于Docker部署Puppeteer的整理

关于Docker部署Puppeteer的整理

时间:2022-10-18 17:44:53浏览次数:69  
标签:http 部署 fonts Puppeteer 镜像 Docker com

最近有个需求,要制作某些网页渲染完成的缩略图,最后用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

相关文章

  • Docker 打包Maven项目Jar包缓存方案
    背景:Docker每次build都会重新生成一个镜像,导致每次执行maven构建会重复下载jar包,一般一个springboot单体应用光是Jar包都有50M起步,假设网络延迟比较大一个镜像打包......
  • 技术分享| 消息队列Kafka群集部署
    一、简介1、介绍Kafka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日......
  • 基于kubernetes+docker+jenkins的DevOps实践
    基于kubernetes+docker+jenkins的DevOps实践之前自己的项目开发就搭了个cicd的环境,那时候是在本就小的可怜的服务器上搭了一套jenkins+dockerregistry+docker总......
  • 云原生架构:容器和Docker
    何为云?技术的变革,一定是思想先行,云原生是一种构建和运行应用程序的方法,是一套技术体系和方法论。云原生(CloudNative)是一个组合词,Cloud+Native。Cloud表示应用程序位于云中......
  • jenkins拉取git上SpringBoot项目进行构建、编译、打包、部署
    安装Jenkins、Git、Maven和JDKLinux服务器部署Jenkins自动化部署工具Linux服务器Git安装Linux服务器Maven安装参考Linux服务器JDK安装参考安装完这几个插件后,配置g......
  • 云原生实战-基于K8s+Docker+DevOps+Jenkins
    云原生实战-基于K8s+Docker+DevOps+Jenkins之前自己的项目开发就搭了个cicd的环境,那时候是在本就小的可怜的服务器上搭了一套jenkins+dockerregistry+docker见......
  • Docker 容器连接
    学习docker最好还是整个服务器,买太贵了,建议租一个,我用的是3A服务器!!!前面我们实现了通过网络端口来访问运行在docker容器内的服务。容器中可以运行一些网络应用,要让......
  • Docker 容器连接
    学习docker最好还是整个服务器,买太贵了,建议租一个,我用的是3A服务器!!!前面我们实现了通过网络端口来访问运行在docker容器内的服务。容器中可以运行一些网络应用,要让外部......
  • 【Bug解决】centos安装docker显示 No package docker-ce available
    问题:我在如下安装docker的命令到yum-yinstalldocker-ce报错Nopackagedocker-ceavailable#1.下载关于docker的依赖环境yum-yinstallyum-utilsdevice-mapper-per......
  • 如何计算QPS、PV和需要部署机器数量?
    基本概念网站访问量的常用衡量标准:独立访客(UV)和综合浏览量(PV),一般以日为单位来计算。独立访客(UV):指一定时间范围内相同访客多次访问网站,只计算为1个独立访客。综合......