精选文章 Puppeteer 应用容器化

Puppeteer 应用容器化

作者:命中有你 时间: 2021-02-05 09:43:14
命中有你 2021-02-05 09:43:14
【摘要】Puppeteer 应用容器化 
Intro 
Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。 更多的介绍,可以参考这里 
项目中使用到了 Puppeteer 来做一些爬虫项目,最后需要把应用容器化部...

Puppeteer 应用容器化

Intro

Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。
更多的介绍,可以参考这里

项目中使用到了 Puppeteer 来做一些爬虫项目,最后需要把应用容器化部署在 docker 上,于是就有了这篇文章。

自定义 docker image

谷歌官方还没有推出一个官方的 docker 镜像,Github上有一个 issue,有需要的话可以关注下,但是官方有一个 dockerfile 示例

参见官方文档: https://github.com/GoogleChrome/puppeteer/blob/master/docs/troubleshooting.md#running-puppeteer-in-docker

于是自己在官方的 dockerfile 基础上加以修改,制作了一个 image,docker hub 镜像地址:https://hub.docker.com/r/weihanli/puppeteer/

Dockerfile 内容详见: https://github.com/WeihanLi/docker-env/blob/master/docker-puppeteer/Dockerfile

怎么使用

  • 在 docker-compose 中使用

    示例 docker-compose 文件:

    version: 2
    services:
      puppeteer-crawler: image: weihanli/puppeteer:latest container_name:  puppeteer-crawler ports: - 10240:3000 volumes: - ./src:/app
    

    我的项目结构是这样的

    - src (具体的项目代码)
    Dockerfile
    docker-compose.yml
    
  • 基于此镜像构建新的镜像

    示例 Dockerfile:

    FROM weihanli/puppeteer:latest
    
    COPY --chown=pptruser:pptruser ./src .
    
    EXPOSE 3000
    
    

    这里指定了 --chown=pptruser:pptruser 是因为官方建议不用使用 root 用户,新建了一个 pptruser 的用户组以及用户,使用pptruser这个用户去执行要执行的代码,这里是为了防止出现用户权限相关问题。

如果可以使用 docker-compose 的话,建议还是使用 docker-compose

docker 镜像启动之后默认执行的命令是 yarn start,你只需要在 app 目录下可以执行 npm run start 或者 yarn start 都是可以的,当然你也可以自定义要执行的命令来覆盖默认的 Command 命令

Reference

End

最后如果你在考虑容器化一个 Puppeteer 应用,希望你可以使用这个镜像,如果有什么问题也欢迎和我联系,我会尽我所能去解决问题。

勿删,copyright占位
分享文章到微博
分享文章到朋友圈

上一篇:CRM管理策略为什么能增加企业利润?

下一篇:Linux内核学习笔记 -24 中断处理机制

您可能感兴趣

  • CTI的典型应用之二

    CTI的典型应用之二 ◆ 呼叫中心 晓辉   呼叫中心(Call Center)是CTI应用的一个分支,它能使电话用户通过电话机终端访问计算机存储的信息,就象使用键盘和屏幕终端一样方便。  目前的呼叫中心主要有两大类型:专用电话交换机连接的CallCenter和局用交换机连接的Call Center。前者一般用于有电话交换机(PBX)的公司、工厂、企业,PBX除满足于话务通信功能外,还可...

  • CTI的典型应用之三

    CTI的典型应用之三◆ 电话语音卡 黄至周   电话语音卡,确切地说,应称为“电脑与电话语音处理卡”,作为公共电话网与电脑的接口设备,近年来在中国通讯市场中异军突起,正日益成为发展最快,应用最广的通讯产品之一。短短几年中,其应用领域从最初的“证券委托”,逐步拓展到邮电通讯、信息服务、办公自动化、金融、公安、医疗、商业、娱乐、交通运输、工业生产及社会生活等各个方面,并且还将以更快的速度继续发...

  • 基于MySQL的高性能数据库应用开发

    在数据库的应用开发中,常常会遇到性能和代价的之间矛盾。以作者在开发股市行情查询和交易系统中遇到的问题为例,要在实时记录1000多只股票每分钟更新一次的行情数据的同时,响应大量并发用户的数据查询请求。考虑到性价比和易维护性,系统又要求在基于PC服务器,Windows NT平台的软硬件环境下实现。开始,我们采用了MS SQL Server 6.5 作为数据库系统,用Visual C++ 6.0开...

  • 关于包(Package)应用规范的说明

    一、 dataBase端开发介绍:package分为两个部分:1、package head,2、package body。前者为包头的定义,后者为过程及方法的实体。只要包头定义中描述足够详细,可以隐藏包体的细节。举例如下:package head pkg_topnetis--user define data type—--用户自定义数据类型--    --user define proced...

  • VB中子分类技术的应用

    子分类技术的原理:要先取得原先Window Procedure所在的地址,将之记录起来,接着设定所有的消息都先转到我们所写的消息处理过程上来,我们过滤传过来的消息,寻找特定的消息进行处理,其余的送回系统,由系统决定如何处理。等到我们不需要再处理这些特定的消息时,便取消消息的截取,即中止子分类过程。它一般需要三个过程:开始截取,消息处理,中止截取.   程序需要一个模块,在模块中声明如下:  ...

  • 利用ASP开发Web应用

    利用ASP开发Web应用 通常情况下,用户通过浏览器看到的网页大多是静态的,而随着Web应用的发展,用户 希望能够看到根据要求而动态生成的主页,例如响应用户查询数据库的要求、生成报表等。 根据用户请求生成动态主页的传统方法有CGI、ISAPI等。CGI是根据浏览器端的http请 求激活响应进程,每一个请求对应一个进程。当同时有很多请求时,程序挤占系统资源,造 成效率低下;ISAPI针对这...

  • PowerBuilder应用开发系列讲座(1)

    PowerBuilder应用开发系列讲座(1)张健姿   在数据库中,所谓事务是指一组逻辑操作单元,使数据从一种状态变换到另一种状态。为确保数据库中数据的一致性,数据的操纵应当是离散的成组的逻辑单元:当它全部完成时,数据的一致性可以保持,而当这个单元中的一部分操作失败,整个事务应全部视为错误,所有从起始点以后的操作应全部回退到开始状态。    对事务的操作是这样进行的:先定义开始一个事务,然...

  • 控件在应用程序的应用

    在窗口中添加控件  一个成功的应用程序离不开漂亮的界面。本章主要谈谈Windows内置的控件在应用程序中的应用,包括如何声明变量并把它们和控件相关联;如何在控件和变量的值之间保持同步;如何使用控件对象ID来检索控件对象,从而操纵控件,以及如何把控件作为窗口来处理;还有如何指定应用程序窗口中控件选项卡的顺序,从而控制用户在窗口中切换应用程序的顺序。小生以前从来没有写过什么文章,在此借此机会希望...

CSDN

CSDN

中国开发者社区CSDN (Chinese Software Developer Network) 创立于1999年,致力为中国开发者提供知识传播、在线学习、职业发展等全生命周期服务。

华为云40多款云服务产品0元试用活动

免费套餐,马上领取!
Puppeteer 应用容器化介绍:华为云为您免费提供Puppeteer 应用容器化在博客、论坛、帮助中心等栏目的相关文章,同时还可以通过 站内搜索 查询更多Puppeteer 应用容器化的相关内容。| 移动地址: Puppeteer 应用容器化 | 写博客