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


    1,开始学习构建docker镜像

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

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

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

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

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

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

    2,构建一个alpine 镜像

    目标,做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包依赖。 

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

  • 相关阅读:
    日记 2018/1/12
    【程序员笔试面试必会——排序①】Python实现 冒泡排序、选择排序、插入排序、归并排序、快速排序、堆排序、希尔排序
    Python笔试、面试 【必看】
    高性能Go并发
    Go连接MySql数据库Error 1040: Too many connections错误解决
    MAC 配置文件 ~/.zshrc
    go-statsd项目
    日记 2017.11.20
    sed 命令详解
    Opentsdb简介(一)
  • 原文地址:https://www.cnblogs.com/enncloudcn/p/6909467.html
Copyright © 2020-2023  润新知