开篇
开篇呢我想贴下上一篇的发布代码。
1 | docker push que01/vim |
如果,我是说如果你自己也曾经这样push一个容器过,那么就会知道在国内这环境通过跨洋电缆把这容器传到dockerHub是多么艰辛。
而且一旦使用的baseBox更新了,如果你也打算跟着更新时候,如果使用这种方式会让人彻底崩溃。
所幸,我们有自动构建这个工具。linux的自动构建工具其实有很多,好几年前毕业前个人曾经仰望过,似乎需要进行shell编程,所以望而却步了。不过Docker的dockerfile却如此简单。
本文算是对上一篇进行了自动化构建。
不过考虑到官方的centos(70M+)比ubuntu(120M+)要小一些。所以我干脆换了centos做baseBox。如果有可能再尝试下更小的alpine Linux,这才是真正的小到极致吧。不过本文构建的镜像应当还是有用的。毕竟centos是非常常用的一个发行版。
体积这事,这算是用屌丝版mbpr的怨念吧。。。
7.15更新
今天用alpine做baseBox完成了同样的工作,体积来说实在是小了太多了。压缩后为64M,一旦解压也只有220M不到。算是小到极致了。que01/docker-vim-tiny 大家可以去看看Dockerfile怎么写的。这里不再赘述。alpine的包管理实在不太熟,错误太多次才搞好。。。
Dockerfile
创建相关的自动化配置文件:
1 | touch Dockerfile |
把下面代码贴进去:
1 | FROM centos |
下面简单讲讲为什么要这么写,也不枉当初大学时候那么喜欢linux,装遍各大发行版。。。
Dockerfile相关
这里个人也是新手,仅仅用了三个相关的命令:
- FROM 设置基础的镜像baseBox
- MAINTAINER 设置维护者信息
- RUN 编写要在容器内部运行的脚本。
另外说一下要将所有命令用&&写一行的原因:因为之前看过一篇文章,其介绍说每个RUN会创建一层容器导致打包体积变大,所以直接这样写了。
Linux相关的东西
这里也就讲讲RUN里面的命令。
yum是centos的包管理工具,这个和ubuntu的apt-get是一类的东西。我们在centos里面使用yum install xxx
来安装一个包。
- -y 选项用来静默安装,对各种需要交互的环节帮你自动按y
- –nogpgcheck 这个嘛,因为我当时install时候会提示gpg不对,这个用来取消签名或者证书检查
相关安装的软件包:
- vim git zsh 这几个不用提
- python-devel cmake “Development tools” 编译YouCompleteMe要用
1 | git clone https://github.com/que01/vimrc ~/.vim_runtime && cd ~/.vim_runtime && \ |
这排代码是我个人的vimrc的git repo,里面使用submodule加入了youcompelteMe,相关代码都是获取必要的文件用的。上篇文章介绍过,可以放心用。
1 | sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" |
这行是oh-my-zsh,centos里面自带了curl,那么就不用ubuntu里面那样安装一个了。
1 | curl --silent --location https://rpm.nodesource.com/setup_4.x | bash - && yum -y --nogpgcheck install nodejs |
这行呢,是nodejs官网的,安装node用的,ternJs需要这个。
1 | ./install.py --tern-completer |
这行是编译youcompelteMe用的,官方Readme可查。–tern-completer用来自动安好ternjs,不过需要node支持。
1 | yum remove -y xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx |
这个超级长的一排是安装编译环境yum groupinstall –nogpgcheck -y “Development tools”时候自动安装的依赖啊什么,编译完了就卸载掉。
1 | yum clean all && cd ~/.vim_runtime && find . -name ".git" | xargs rm -Rf |
清除yum包的各种缓存,然后进入vimrc配置文件夹,删除下该文件夹下所有的.git文件夹以求减少体积(YouCompleteMe的git库还是非常大的!)。
收尾
其实这篇就是对上一篇的自动化构建,没有太多值得一提的地方,主要是对yum比较熟悉就行了。
另,编译好的镜像已经发布了。大家需要可以使用下面命令pull回来:
1 | docker pull que01/vim |
下载体积也就138M,不过解压完毕有420M,感觉dockerHub真是黑科技!