0. 前言
Cobra(眼镜蛇)是一个库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。Docker源码中使用了Cobra。
Cobra基于三个基本概念commands
,arguments
和flags
。其中commands代表行为,arguments代表数值,flags代表对行为的改变。
基本模型如下:
1 | APPNAME COMMAND ARG --FLAG |
Cobra(眼镜蛇)是一个库,其提供简单的接口来创建强大现代的CLI接口,类似于git或者go工具。同时,它也是一个应用,用来生成个人应用框架,从而开发以Cobra为基础的应用。Docker源码中使用了Cobra。
Cobra基于三个基本概念commands
,arguments
和flags
。其中commands代表行为,arguments代表数值,flags代表对行为的改变。
基本模型如下:
1 | APPNAME COMMAND ARG --FLAG |
Chrome59(linux、macos)、 Chrome60(windows)之后,Chrome自带headless(无界面)模式很方便做自动化测试或者爬虫。但是如何和headless模式的Chrome交互则是一个问题。通过启动Chrome时的命令行参数仅能实现简易的启动时初始化操作。Selenium、Webdriver等是一种解决方案,但是往往依赖众多,不够扁平。
puppeteer是谷歌官方出品的一个通过DevTools协议控制headless Chrome的Node库。可以通过puppeteer的提供的api直接控制Chrome模拟大部分用户操作来进行UI Test或者作为爬虫访问页面来收集数据。
pyperteer是puppeteer的Python实现,相比于selenium具有异步加载、速度快、具备有界面/无界面模式、伪装性更强不易被识别为机器人同时可以伪装手机平板等终端;但是也有一些缺点,如接口不易理解、语义晦涩;
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
1 | from pkg.func import hello |
__init__.py
,如果目录中存在该文件,该目录就会被识别为 module package 。__init__.py
在包被导入时会被执行。该文件就是一个正常的python代码文件,因此可以将初始化代码放入该文件中。在制作 Docker Images 之前, 我们先看一下Docker 官方提供了一些建议和准则,在大多数情况下建议遵守。
容器是短暂的,也就是说,你需要可以容易的创建、销毁、配置你的容器。
多数情况,构建镜像的时候是将 Dockerfile 和所需文件放在同一文件夹下。但为了构建性能,我们可以采用 .dockerignore 文件来排除文件和目录。
避免安装不必要的包,构建镜像应该尽可能减少复杂性、依赖关系、构建时间及镜像大小。
最小化层数。 Dockerfile的一行(除MAINTAINER外)对应镜像的一层,为使层数足够小,故可以将类似的命令串起来,比如RUN 指令,可以使用&&连接多个指令,如此也只有一层。
排序多行参数,通过字母将参数排序来缓解以后的变化,这将帮你避免重复的包、使列表更容易更新,如:
1 | RUN apt-get update && apt-get install -y \ |