美文网首页
Python Docker 最小化镜像

Python Docker 最小化镜像

作者: UULU | 来源:发表于2019-03-12 15:44 被阅读0次

    对比下 Python Docker 官方镜像,alpine 是最小的版本

    $ docker images | grep python
    python  3.7-alpine          bb1ccaa5880c        4 days ago          86.7MB
    python  3.7-stretch         32260605cf7a        7 days ago          929MB
    python  3.7.2-slim-stretch   e0d20fa24f01        7 days ago          143MB
    python  3.7                 ad01f54ca3a9        2 months ago        923MB
    

    我的项目中用到了 mysqlclient 包里的 MySQLdb 库,需要安装一些环境依赖

    PIP 配置文件

    requirements.txt

    mysqlclient
    

    Docker 配置文件

    Dockerfile

    FROM python:3.7-alpine
    
    COPY requirements.txt /requirements.txt
    
    # 安装精简的mariadb依赖库
    RUN apk --no-cache add mariadb-connector-c-dev
    
    # 安装 mysqlclient 的依赖环境到临时的虚拟包
    # 用pip安装 mysqlclient 到python库
    # 删除缓存文件和虚拟包
    RUN apk --no-cache add --virtual .build-deps \
        build-base \
        mariadb-dev \
        && pip install -r /requirements.txt \
        && rm -rf .cache/pip \
        && apk del .build-deps
    
    
    ENV app /app
    WORKDIR ${app}
    ADD . $app
    
    # 自己的部分
    CMD ["python3", "main.py"]
    

    编译镜像

    $ docker build -t platform-scripts .
    ...
    
    $ docker images
    platform-scripts latest 00eaafb082b4 11 seconds ago 115MB
    

    这种方式打包出来的镜像只有 115MB :)

    总结

    精简的思路就是使用最小的根镜像,然后按需安装必要的依赖,最后清理掉临时没用的文件

    相关文章

      网友评论

          本文标题:Python Docker 最小化镜像

          本文链接:https://www.haomeiwen.com/subject/imrnpqtx.html