简述
从刚开始的时候两眼一抹黑,到磕磕碰碰的终于让测试包可以在代码提交的时候顺利的自动构建,团队终于向CI和CD的开发生活迈出了历史性的一步,中间踩了不少坑,也有不少收获,写一篇东西纪念一下。
感觉这篇东西都是键者不成熟的思绪,满满的水货~
从刚开始的时候两眼一抹黑,到磕磕碰碰的终于让测试包可以在代码提交的时候顺利的自动构建,团队终于向CI和CD的开发生活迈出了历史性的一步,中间踩了不少坑,也有不少收获,写一篇东西纪念一下。
感觉这篇东西都是键者不成熟的思绪,满满的水货~
原文:http://www.jianshu.com/p/748416621013
随着 Docker v1.13 版本发布,Compose 的配置文件也发生了改动,官方命名为 v3,今天来看一下相比 v2 的写法,v3有哪些异同。
因为是 YAML 语法,所以无论是 .yml 还是 .yaml 作为后缀名,Compose 都可以识别。
有些时候,由于各种历史原因,某些应用的服务之间耦合度非常高,具体表现为各种crontab+脚本的管理模型,且每个脚本的功能已经随着历史的车轮滚滚风化。
当然,资源(主要是时间)和收益(主要是还有多少人用)受到制约的情况下,把所有服务塞到一个容器里未必是一个坏选择(至少下次迁移的时候可以省心很多),这个时候docker容器默认监控CMD命令的进程就是出现一点小问题,也许可以这样处理(笔者随手写的,没有找过是否有更好的方案):
一个是清理过期的image,也就是将名字为
# alias.zsh
alias 'dclean-none'='docker images|grep "^<none>"|awk '\''{print $3}'\''|xargs docker rmi -f'
另一个是清理docker build失败时产生的冗余image
# alias.zsh
alias 'dclean2'='docker ps -a|grep "^[a-f0-9]\{12\}[[:blank:]]\+[a-z0-9]\{12\}[[:blank:]]\+[[:print:]]\+[[:blank:]]\+[[:lower:]]\+_[[:lower:]]\+"|awk '\''{print $1}'\''|xargs docker rm'
因为严格来说没法绝对匹配,这个正则假设了IMAGE不是12位的小写+数字,但是有可能因为原来的镜像更新导致本来有名字的镜像,变成了sha编码,所以继续判定了末尾的NAMES是否是由#单词_单词#的结构组成的。
所以自己的镜像尽可能避免这个场景,或者有更好的方案欢迎留言~
首先生成需要使用的crontab的配置文件,
注意最后一行必须为空行!必须为空行!必须为空行!
# vi crontabfile.txt 文件名自己定即可
*/1 * * * * /new_fund.php >/dev/null 2>&1
*/5 * * * * /fund.php >/dev/null 2>&1
0 */1 * * * /default.php >/dev/null 2>&1
Alpine官方对这个问题的说明:
http://wiki.alpinelinux.org/wiki/Running_glibc_programs
docker pull szyhf/bitcoin-alpine
这几天在弄比特币核心的镜像,打算迁移一个已有服务到另一个服务器,dockerhub上已有的版本大多比较旧,而且很久没更新了,我对比特比核心的东西不熟悉,不敢随便用旧版,于是折腾了一下比特币核心的镜像,基于Ubuntu的镜像没啥好说的,很快的就搞定了,但是表示还是不太喜欢那么大的镜像(当然,我知道其实在服务器上也就存储一个根镜像),于是折腾起了Alpine版。
国内用Docker处理镜像必备