面面观 | 使用alpinelinux 构建python http 项目

1,开始学习构建docker镜像python

http://study.163.com/course/courseMain.htm?courseId=1273002 git

课程讲的是使用centos构建。本身也一直使用centos,可是有个问题。 github

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

因此选择使用 alpine(阿尔卑斯,和那个糖名字同样)。新智云官方网站:www.enncloud.cn docker

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

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

 

 

2,构建一个alpine 镜像bash

 

目标,作2个镜像,一个数据库的,一个Python的。 网络

而后链接起来。能存储,能查询,就能够了。 工具

充分利用docker的优点,首先要构建一个基础的python环境。 

而后再在这个环境的基础上开发程序。 

不然的话每次从0构建太慢了。主要是由于网络慢。 

mkdir alpine-python 

vi alpine-python/Dockerfile

 

特别要注意下:

 

 

其中 bash 是方便进入镜像里面查看的。 

这个是设置一个国内清华大学的站点。 

由于直接拉官网的太慢了。有的时候就卡死了。 

固然也能够直接创建一个内网的私服。那样就更快了。 

参考这个哥们的能够作个私服: 

https://my.oschina.net/funwun/blog/710877

 

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

 

 

若是没有报错就能够了。python环境依赖的东西比较多呢。 

并且python在安装的时候还须要gcc的编译工具。 

使用 docker images 查看编译后的镜像: 

发现也已经 几百兆了。彷佛明白了为啥要开发一个golang了。 

golang的文件也就 几兆吧。对于镜像来讲真的是太好了。

 

使用docker images 查看镜像:

 

 

3,构建http项目

 

再利用alpine-python镜像作一个http服务 

vi main.py

编写Dockerfile

 

编译:

 

 

4,运行http

直接运行就能够了。可是有个问题,访问端口没结果。

 

 

报错是这样的: 

https://github.com/docker/docker/issues/2174 

可是尚未找到解决办法。

 

已经解决,是python程序须要主动绑定。

 

这样写就能够了。

 

4,总结

总的来讲docker仍是很是的好用的,可是遇到一个问题。 

使用python 和PHP的项目都须要安装很是大的包。 

形成了原本就很小的镜像,alpine 5mb的变成了几百mb。 

大概明白了golang为适合云服务了。由于golang,最后编译的文件才几mb。 

再配合上alpine就太完美了。两个加起来 几十mb搞定。 

每次升级备份都很是的方便。而Java加上jdk,在加上jar包依赖。 

就变得臃肿起来了。继续研究。

 

 

相关文章
相关标签/搜索