Puppeteer 应用容器化
Puppeteer 应用容器化
Intro
Puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过Puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。
更多的介绍,可以参考这里
项目中使用到了 Puppeteer 来做一些爬虫项目,最后需要把应用容器化部署在 docker 上,于是就有了这篇文章。
自定义 docker image
谷歌官方还没有推出一个官方的 docker 镜像,Github上有一个 issue,有需要的话可以关注下,但是官方有一个 dockerfile 示例
于是自己在官方的 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 应用,希望你可以使用这个镜像,如果有什么问题也欢迎和我联系,我会尽我所能去解决问题。
Puppeteer 应用容器化的更多相关文章
- docker4dotnet #2 容器化主机
.NET 猿自从认识了小鲸鱼,感觉功力大增.上篇<docker4dotnet #1 前世今生&世界你好>中给大家介绍了如何在Windows上面配置Docker for Window ...
- 面向UI编程:ui.js 1.0 粗糙版本发布,分布式开发+容器化+组件化+配置化框架,从无到有的艰难创造
时隔第一次被UI思路激励,到现在1.0的粗糙版本发布,掐指一算整整半年了.半年之间,有些细节不断推翻重做,再推翻再重做.时隔今日,终于能先出来个东西了,这个版本很粗糙,主体功能大概能实现了,但是还是有 ...
- .NET Core容器化@Docker
温馨提示:本文适合动手演练,效果更佳. 1. 引言 我们知道. NET Core最大的特性之一就是跨平台,而对于跨平台,似乎大家印象中就是可以在非Windows系统上部署运行.而至于如何操作,可能就 ...
- .NET Core容器化之多容器应用部署@Docker-Compose
1.引言 紧接上篇.NET Core容器化@Docker,这一节我们先来介绍如何使用Nginx来完成.NET Core应用的反向代理,然后再介绍多容器应用的部署问题. 2. Why Need Ngin ...
- .NET Core+MySql+Nginx 容器化部署
.NET Core容器化@Docker .NET Core容器化之多容器应用部署@Docker-Compose .NET Core+MySql+Nginx 容器化部署 GitHub-Demo:Dock ...
- .NET微服务 容器化.NET应用架构指南(支持.NET Core2)
介绍 企业通过使用容器,日益实现成本节约.解决部署问题并改进 DevOps 和生产操作. 通过创建 Azure 容器服务.Azure Service Fabric 等产品,同时与 Docker.Mes ...
- 容器化的 DevOps 工作流
对于 devops 来说,容器技术绝对是我们笑傲江湖的法宝.本文通过一个小 demo 来介绍如何使用容器技术来改进我们的 devops 工作流. devops 的日常工作中难免会有一些繁琐的重复性劳动 ...
- Asp.net容器化
注意:本文只用于探讨asp.net容器化,不建议生产环境下使用(docker 镜像太大!!!!) 安装docker 准备一个台windwos server 2016 ,在PowerShell 里执行以 ...
- 容器化分布式日志组件ExceptionLess的Angular前端UI
写在前面 随着微服务架构的流行,日志也需要由专门的分布式日志组件来完成这个工作,我们项目使用的是 ExceptionLess 这个组件,它是前后端分离的:这篇文章我们就来实践容器化 Exception ...
随机推荐
- 依赖背包——cf855C好题
比较裸的依赖背包,但是想状态还是想了好久 转移时由于边界问题,虽然可以倒序转移,但当容量为0|1的时候,由于有初始值的存在 很难再原dp数组上进行修改,所以额外用tmp数组来保存修改后的值 #incl ...
- 安装Spotlight On Unix监控Linux
1.安装Spotlight 一步一步按提示安装即可- 2.安装sysstat 在Linux上,必须安装sysstat包,用户才可以获取详细的磁盘I/O信息. 执行 rpm -qa |grep syss ...
- zabbix4.0添加磁盘io监控
agent服务器端的操作 1.设置zabbix-agent端的配置文件 找到agent端配置文件的位置,本例agent端的配置文件路径在/usr/local/etc/zabbix下 首先:在主配置文件 ...
- JSP页面错误处理 JSP页面代码正确却标红的解决办法
保存,关闭JSP页面,重新打开即可解决 原因的IDE没有反应过来
- podman(libpod)---github简单记录
这个应该集成了Skopeo 和Buildah. 用于代替docker的工具包,且和cri-o共享后端代码,迟早集成进K8S~~~. (docker肿么办????) github地址: https:// ...
- python常见排序算法解析
python——常见排序算法解析 算法是程序员的灵魂. 下面的博文是我整理的感觉还不错的算法实现 原理的理解是最重要的,我会常回来看看,并坚持每天刷leetcode 本篇主要实现九(八)大排序算法 ...
- LOJ#3043.【ZJOI2019】 线段树 线段树,概率期望
原文链接www.cnblogs.com/zhouzhendong/p/ZJOI2019Day1T2.html 前言 在LOJ交了一下我的代码,发现它比选手机快将近 4 倍. 题解 对于线段树上每一个节 ...
- pycharm的list的应用
li = [11,22,22,33,44] v = li.count(22) print (v) #输出结果2 #计算元素的次数 count的应用 li = [11,22,33,22,44] li.e ...
- [数据结构] 希尔排序 C语言程序
//由小到大 //希尔排序 void shellSort( long int array[], int length) { int i; int j; int k; int gap; //gap是分组 ...
- 页面跳转之session
题意:设主页为index.jsp 通过session将index.jsp中的信息传送给结果页面result.jsp.(其实,session的生命周期是整个服务器开启过程,具体不做详细介绍).这个 其实 ...