文档章节

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

极客脑司机
 极客脑司机
发布于 2017/05/05 15:20
字数 858
阅读 228
收藏 1

开始学习构建docker镜像

http://study.163.com/course/courseMain.htm?courseId=1273002 
课程讲的是使用centos构建,自己也一直使用centos,但是有个问题:
 

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

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

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

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

 

构建一个alpine 镜像

目标做两个镜像:一个数据库的,一个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 查看镜像:

 

构建http项目

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

编写Dockerfile:

编译:

 

运行http

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

报错是这样的: 
https://github.com/docker/docker/issues/2174 
但刚开始没有找到解决办法。

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

这样写就可以了。

 

总结

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

 

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

© 著作权归作者所有

极客脑司机
粉丝 0
博文 15
码字总数 10811
作品 0
私信 提问
docker入门与实践之【06-其他镜像制作方式】

1.从压缩包导入 格式: 可以使用history命令查询构建记录: 2. 和 使用 docker save 命令可以将镜像保存为归档文件。 比如我们希望保存这个 alpine 镜像。 保存镜像的命令为: 然后我们将 al...

Funcy1122
2018/06/08
0
0
如何 Docker 化 Python Django 应用程序

Docker 是一个开源项目,为开发人员和系统管理员提供了一个开放平台,可以将应用程序构建、打包为一个轻量级容器,并在任何地方运行。Docker 会在软件容器中自动部署应用程序。 Django 是一个...

06%
2018/09/12
0
0
Docker搭建Robot Framework环境

基础镜像选择Alpine Linux,关于Alpine的介绍参见Alpine Docker 安装 bash。Dockerfile内容如下: 关于Dockerfile的内容,有几点需要注意: 以上安装的python版本是2.7.14,对于rf框架来说,这...

时间之弧
2018/04/12
0
0
Alpine Docker 安装 bash

Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。Alpine Linux提供了自己的包管理工具:apk,我们可...

时间之弧
2018/04/12
0
0
【URLOS应用开发基础课】docker官方系统镜像Alpine入门教程

我们在进行URLOS应用开发时,经常会用到一些基础系统镜像,如:ubuntu、CentOS、Debian等,我们可以通过docker pull命令直接拉取官方镜像。 以上是从docker官方拉取的ubuntu18.04镜像,我们可...

低调的维斯
04/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

面试爱奇艺,竟然挂在第5轮……

今天给大家分享我曾经在爱奇艺的面试,过程还是比较有意思的,可以给大家一些参考 <br> 聊骚阶段 嗲妹妹:你好,我是爱奇艺的HR,我们正在招聘运维开发岗位,请问您最近有在看工作机会吗? ...

上海小胖
29分钟前
0
0
Jenkins系列_插件安装及报错处理

进入Jenkins之后我们可以进行插件的安装,插件管理位于以下模块: 发现上面报了一堆错误,是因为插件的依赖没有安装好,那么这一节,就先把这些错误解决掉吧。解决完成后,也就基本会使用插件...

shzwork
今天
2
0
mysql mysql的所有查询语句和聚合函数(整理一下,忘记了可以随时看看)

查询所有字段 select * from 表名; 查询自定字段 select 字段名 from 表名; 查询指定数据 select * from 表名 where 条件; 带关键字IN的查询 select * from 表名 where 条件 [not] in(元素...

edison_kwok
昨天
9
0
解决多线程并行加载缓存问题(利用guava实现)

依赖 com.google.guava:guava:20.0 import com.google.common.cache.Cache;import com.google.common.cache.CacheBuilder;import java.util.concurrent.ExecutionException;import j......

暗中观察
昨天
4
0
利用VisualVM 内存查看

准备工作,建几个测试类。等下就是要查看这几个类里面的属性 package visualvm;public class MultiObject { private String str; private int i; MultiObject(String str...

冷基
昨天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部