栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Docker多阶段构建Django

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker多阶段构建Django



前言

        本小结主要结合实践,如何针对Docker镜像进行瘦身,通过其多阶段构建特性进行




一、前后对比
基本镜像说明大小
Centos7单一构建1.02GB
Alpine3单一构建678MB
Alpine3多阶段构建312MB


二、环境
环境版本说明
Docker19.03.1必须大于17.05,此后才支持多阶段构建
Django3.1.10


三、Dockerfile

        以下是最后的Dockerfile,可以看到一共有三个阶段:

        (1)阶段一:通过选用的python:3.7.4-alpine3.10作为基础镜像,在此阶段构建必要编译环境等

    (2)阶段二:FROM base as Build,依赖上述镜像,在此阶段构建应用需要的环境(python安装包),其他应用同理

    (3)阶段三:正式镜像,通过COPY --from=Build /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.7/site-packages等操作,将阶段二已构建好的包,复制至正式镜像中,应用启动并不关心安装依赖包等过程

FROM python:3.7.4-alpine3.10 as base   # 1. 基础镜像
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 
    && apk add --no-cache build-base vim gcc linux-headers libffi-dev mariadb-connector-c-dev

FROM base as Build    # 2. 安装依赖
ENV CRYPTOGRAPHY_DONT_BUILD_RUST=1
COPY requirements.txt /tmp
RUN pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple 
    && pip install --no-cache-dir -r /tmp/requirements.txt -i https://pypi.douban.com/simple

FROM python:3.7.4-alpine3.10  # 3. 正式镜像
ENV TZ=Asia/Shanghai
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories 
    && apk --no-cache add tzdata mariadb-connector-c-dev 
    && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime 
    && echo $TZ > /etc/timezone && rm -rf /var/cache/apk/*

COPY --from=Build /usr/local/lib/python3.7/site-packages /usr/local/lib/python3.7/site-packages
COPY --from=Build /usr/local/bin/daphne /usr/local/bin/daphne
ADD app.tar.gz /opt  # 引入程序代码
WORKDIR /opt/app
ENTRYPOINT ["sh", "./script/start_app.sh"]  # 启动应用



总结

        通过上述Dockerfile的多次构建,正式镜像体积缩减效果显著。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339128.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号