Docker老司机来和你谈谈如何使用Alpine linux构建Python http项目

云谈

简单介绍一下:Alpine Linux是一个社区开发的面向安全应用的轻量级 Linux 发行版,适合用来做路由器、防火墙、VPNs、VoIP 盒子 以及服务器的操作系统基于 uClibc 和 Busybox。

开始学习构建docker镜像

课程讲的是使用centos构建,自己也一直使用centos,但是有个问题:

就是centos镜像比较大,安装的东西比较多。真正的Linux其实用不了那么多,尤其是在使用Docker的时候,打包的次数越多,镜像文件堆积的越多。 

所以选择使用 alpine(阿尔卑斯,和那个糖名字一样)。官方网站: 
https://alpinelinux.org/ 

有iOS的版本大约81mb,但是在docker上面使用的版本是更精简的才 4mb。这个是没有bash的,需要安装一个bash。 

安装了之后才 5mb。剩下的就是安装各种软件了。基础的版本就是这样小,而对于centos来说一个镜像就要600多mb。更别说装东西之后了。

 

构建一个alpine 镜像

目标做两个镜像:一个数据库的,一个Python的。 

然后把两个连接起来一一一既能存储也能查询,那样就可以了。充分利用docker的优势,首先要构建一个基础的python环境,然后再在这个环境的基础上开发程序。 

否则的话每次从0构建太慢了。主要是因为网络慢。 

 

特别要注意下:

 

其中 bash 是方便进入镜像里面查看的。这个是设置一个国内清华大学的站点。因为直接拉官网的太慢了,有的时候就卡死了,当然也可以直接建立一个内网的私服,那样就更快了。 

参考这个哥们的可以做个私服: 
https://my.oschina.net/funwun/blog/710877

然后打包一个基础的python 包:

如果没有报错就可以了,python环境依赖的东西比较多,而且python在安装的时候还需要gcc的编译工具。 

使用 docker images 查看编译后的镜像: 
发现也已经几百兆了,似乎明白了为啥要开发一个golang了。golang的文件也就 几兆,对于镜像来说真的是太好了。

 

使用docker images 查看镜像:

构建http项目

再利用alpine-python镜像做一个http服务 
vi main.py

 

编写Dockerfile:

编译:

运行http

 

很简单,直接运行就可以了。但是有个问题,访问端口没结果。

报错是这样的: 

但刚开始没有找到解决办法。

后来发现已经解决,是python程序要主动绑定。

这样写就可以了。

总结

总的来说docker还是非常的好用的,但是遇到一个问题。使用python 和PHP的项目都需要安装非常大的包。造成了本来就很小的镜像,alpine 5mb的变成了几百mb。大概明白了golang为适合云服务了。因为golang最后编译的文件才几mb。 

 

再配合上alpine就太完美了。两个加起来 几十mb搞定。每次升级备份都非常的方便。而Java加上jdk再加上jar包依赖就变得臃肿起来了。

新智云官网:http://www.enncloud.cn

 

posted on 2017-05-04 16:58  极客脑司机  阅读(7867)  评论(1编辑  收藏  举报

导航