docker(19):压缩docker python 镜像大小,减少依赖

原创 2018年04月16日 17:09:34

1,关于python镜像


使用python开发的时候遇到问题。
发现构建之后 镜像还是比较大的。想办法减少点文件啥的。
能让镜像小点,这样发布部署啥的都方便。

2,构建dockerfile


python3 在构建pandas 遇到点问题。
还是使用python2 进行构建的:

FROM python:2-slim-jessie

#设置 apt sources pip timezone 参数
RUN echo "deb http://mirrors.aliyun.com/debian/ jessie main non-free contrib" > /etc/apt/sources.list && \
echo "deb http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ jessie main non-free contrib" >> /etc/apt/sources.list && \
echo "deb-src http://mirrors.aliyun.com/debian/ jessie-proposed-updates main non-free contrib" >> /etc/apt/sources.list && \
echo "[global]" > /etc/pip.conf  && \
echo "trusted-host=mirrors.aliyun.com" >> /etc/pip.conf  && \
echo "index-url=http://mirrors.aliyun.com/pypi/simple" >> /etc/pip.conf && \
ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
echo "Asia/Shanghai" > /etc/timezone

#install other lib
#名字变了 libmariadbclient-dev-compat - MariaDB database development files (libmysqlclient compatibility)
# libmysqld-dev
# 安装完成就不需要 dev库了删除节省空间。
# pip install pyspark 好像有问题
# https://blog.csdn.net/i2cbus/article/details/41625337 参数优化。
RUN apt-get update && apt-get install -y python-dev libmysqlclient-dev gcc cron vim supervisor git && \
    echo "#define WITH_DOC_STRINGS 1" >> /usr/include/python2.7/pyconfig.h && \
    pip install --upgrade pip && \
    pip install mysqlclient  && \
    pip install sqlalchemy && \
    pip install requests && \
    pip install numpy pandas jupyter && \
    apt-get install -y libmysqlclient18  && \
    rm -rf /root/.cache && apt-get autoclean && \
    apt-get --purge autoremove -y python-dev libmysqlclient-dev gcc && \
    find /usr/lib/python2.7 -name '*.pyc' -delete && \
    find /usr/local/lib/python2.7 -name '*.pyc' -delete && \
    rm -rf /tmp/* /var/lib/apt/* /var/cache/* /var/log/*


#1.解决 pandas 数据插入问题。直接修改数据库驱动 sqlalchemy 修改:statement.replace("INSERT INTO","INSERT IGNORE INTO")
# debian /usr/local/lib/python2.7/site-packages/sqlalchemy
# ubuntu /usr/local/lib/python2.7/dist-packages/sqlalchemy/dialects/mysql/mysqldb.py
# 增加了一个 IGNORE 参数。
#2.解决torndb在python2下面的问题:
#http://blog.csdn.net/littlethunder/article/details/8917378
RUN sed -i -e 's/executemany(statement/executemany(statement.replace\("INSERT INTO","INSERT IGNORE INTO")/g' \
        /usr/local/lib/python2.7/site-packages/sqlalchemy/dialects/mysql/mysqldb.py

#增加语言utf-8
ENV LANG=en_US.UTF-8
ENV LC_CTYPE=en_US.UTF-8
ENV LC_ALL=C

修改了debian mirror 使用aliyun 的地址,pip 安装也修改成 aliyun地址。
这样安装速度超级快。
在安装的时候用 python-dev libmysqlclient-dev gcc 安装完成之后把
python-dev libmysqlclient-dev gcc 这些再删除,这样小很多。

find /usr/lib/python2.7 -name '*.pyc' -delete && \
find /usr/local/lib/python2.7 -name '*.pyc' -delete && \

删除了pyc的 python文件能大概小 80 mb。

rm -rf /root/.cache && apt-get autoclean
rm -rf /tmp/* /var/lib/apt/* /var/cache/* /var/log/*

删除临时文件。

经过一系列删除之后镜像大小到了 484MB ,我已经很努力了。

3,总结


精简了之后其他人在使用的时候就方便多了。在下载的速度也快了。
压缩之后会更小点。把股票系统的镜像再重新修改下。
就专注股票数据抓取,数据分析就行。展示使用golang再写一个。

本文的原文连接是:
https://blog.csdn.net/freewebsys/article/details/79961371

版权声明:本文为博主原创文章,未经博主允许不得转载。博主地址:http://blog.csdn.net/freewebsys https://blog.csdn.net/freewebsys/article/details/79961371

7 步精简 Docker 镜像几百MB(上)

转载:http://www.dockerinfo.net/3328.html 黄庆兵,毕业于浙大,工作于网易,现属网易蜂巢,从事云计算和Docker相关开发和布道工作;制作过Do...
  • qq_36763896
  • qq_36763896
  • 2016-11-22 22:58:33
  • 6453

Docker 的 Image 太大,怎么变小?

铛~铛~铛~Docker即将颠覆整个软件产业,从云计算平台到软件开发、测试,整个SDLC都会极度依赖Docker。 圈子里面一定有很多讨论Docker的话题,简而言之,Docker其实只解决一个问题...
  • u011537073
  • u011537073
  • 2017-06-13 20:39:26
  • 910

Docker镜像压缩与优化

现如今docker如此受人追捧,主要是因为它的轻量化、可以快速部署以及资源的利用。但是一个docker images质量的好与坏,主要取决于Dockerfile编写的质量。同样功能的镜像,但是不同的D...
  • hanlaipeng11
  • hanlaipeng11
  • 2017-08-09 00:27:43
  • 1623

深刻理解Docker镜像大小

都说容器大法好,但是如果没有Docker镜像,Docker该是多无趣啊。 是否还记得第一个接触Docker的时候,你从Docker Hub下拉的那个镜像呢?在那个处女镜像的基础上,你运行了容器生涯的...
  • shlazww
  • shlazww
  • 2015-08-09 22:45:01
  • 8867

docker搭建python环境并打包镜像然后使用镜像启动python程序和flask程序

搭建python环境 双击打开docker 然后下载镜像: docker pull python:3.5 查看是否成功: docker run -v /Users/zjl/pyt...
  • u013055678
  • u013055678
  • 2017-04-15 14:41:12
  • 6604

创建Python数据分析的Docker镜像+Docker自定义镜像commit,Dockerfile方式解析+pull,push,rmi操作

实例解析Docker如何通过commit,Dockerfile两种方式自定义Dcoker镜像,对自定义镜像的pull,push,rmi等常用操作,通过实例创建一个Python数据分析开发环境的Dock...
  • dream_an
  • dream_an
  • 2016-08-07 13:15:02
  • 2759

最近的两个小项目,2:Python webapp的docker镜像

时间过得真快,一眨眼一个多月没更新了,但这一个月我可没偷懒啊,真的是忙。粘上两篇ReadMe勉强凑合一下,保持博客更新是好习惯。flask - dockerDocker image of python...
  • zhengxiaoyao0716
  • zhengxiaoyao0716
  • 2016-04-27 12:56:18
  • 1382

docker详细教程

  • 2016年10月19日 09:07
  • 6KB
  • 下载

Docker学习总结(4)——Docker镜像与容器命令

Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。开发者在笔记本上编译测试通过的容器可以批量地在生产环境中部署,包括VMs(虚拟机)、bare metal、...
  • u012562943
  • u012562943
  • 2015-12-27 15:48:02
  • 3212

使用python脚本获取docker私有镜像仓库镜像信息

方便快速查看仓库中镜像信息 github: https://github.com/charnet1019/get_image_names.py.git #!/usr/bin/env python ...
  • p243679396
  • p243679396
  • 2017-11-12 12:54:10
  • 219
收藏助手
不良信息举报
您举报文章:docker(19):压缩docker python 镜像大小,减少依赖
举报原因:
原因补充:

(最多只允许输入30个字)