Django容器(上): 自定义基础镜像
admin
2023-01-24 02:00:46
0
开始之前

某个 Python 项目,基于 Python:3.6Django:1.11 框架开发,希望项目能够容器化,然后可以通过 docker-compose 等工具编排容器/应用,本篇文章的目标是自定义Django基础镜像

与《为什么需要自定义一个基础镜像?》文章相同,基础镜像作用是为项目镜像提供支持。它构建在 Python 官方镜像之上,添加项目一些需要的扩展模块,例如 DjangopymysqlGunicorn等常用模块,具体以项目实际需求为准。

最后为能够高效的处理静态文件请求,使用 Nginx 反向代理 Django 应用,不过这是下一篇文章要讲的了,《Django容器(下): 使用Gunicorn管理Django》,敬请期待 公众号每周四 docker专题更新文章。。

环境描述
容器镜像: python:3.6
容器系统: debian 9 (stretch)
Docker版本: CE - 17.06.0
Docker主机: Ubuntu Server 16.04
操作步骤
  1. 基础镜像构建目录
tree base/

base/
├── conf
│   ├── 404.html
│   ├── default.conf
│   ├── nginx.conf
│   ├── requirements.txt
│   ├── sources.list
│   ├── ssl
│   │   ├── domain.crt
│   │   └── domain.key
│   └── supervisord.conf
└── `Dockerfile`

2 directories, 9 files
  1. 基础镜像 Dockerfile 文件
cat base/Dockerfile

# start-base
FROM python:3.6
MAINTAINER dongnan #<@微信公众号:运维录>

# apt
COPY conf/sources.list /etc/apt/sources.list
RUN apt-get update \
    && apt-get install -y supervisor nginx \
    && apt-get clean \
    && rm -r /var/lib/apt/lists/*

# env
ENV TZ=Asia/Shanghai \
    LANG=en_US.UTF-8

# django 
COPY conf/requirements.txt /root/
RUN pip --no-cache-dir install -r /root/requirements.txt -i https://mirrors.aliyun.com/pypi/simple/

这个 Dockerfile 很短,因为是项目基础镜像,只做一些基础工作就可以了。
它首先安装 supervisor nginx 软件包,然后是设置容器的环境变量。
最后使用 pip 安装项目依赖,django 、pymysql 都在 requirements.txt 这个文件中定义。

  1. 构建镜像
docker build -t start-base .

Sending build context to Docker daemon    767kB
Step 1/8 : FROM python:3.6
# ...省略
Successfully built fc3f6f242301
Successfully tagged start-base
  1. 验证镜像
    基础镜像准备完毕后,就可以在项目镜像使用了,这里没有为基础镜像添加 TAG 标记,所以它是默认的 latest 。
docker images --format "{{.Repository}} {{.Tag}}" 

start-base latest
小结

最后来总结下文章中的知识点

  • 基础镜像作用是为项目镜像提供支持,并在基础镜像之上添加项目代码,完成项目镜像构建工作。
  • 使用 supervisor 在容器中管理 nginx、gunicorn (python WSGI Server)进程。
  • pippython 包管理工具,该工具提供了对python 包的查找、下载、安装、卸载的功能。
  • pip -i 选项, 指定仓库地址,默认为 https://pypi.org/simple,**速度很慢**建议使用国内仓库。

参考文章
doker&k8s Qun [703906133]

相关内容

热门资讯

德国总理:美国正在被伊朗羞辱 德国之声4月27日报道,德国总理默茨在访问一所学校时表示,在当前的持续冲突中,伊朗领导层正试图羞辱美...
理响中国|“长”歌以行,风云激... 光阴如梭,东方潮阔。这里是中国的长三角,世界的长三角。无论过去、现在还是未来,这片土地都因时代而生,...
白宫:特朗普及其国安团队开会讨... 新华社华盛顿4月27日电 美国白宫新闻秘书莱维特27日在记者会上证实,总统特朗普及其国家安全团队当天...
人民日报刊文:日本放开杀伤性武... 日本放开杀伤性武器出口推高地缘冲突风险(国际论坛)常思纯《人民日报》(2026年04月28日 第 0...
医疗保障法草案二审:明确生育保... 满足多样化健康保障需求本报记者 彭 波4月27日,医疗保障法草案二审稿提请十四届全国人大常委会第二十...
天津一景区发生自转旋翼机事故1... 澎湃新闻记者 吕新文中国民用航空华北地区管理局4月22日公布《豪客通航“10•1”天津长芦汉盐旅游区...
卡塔尔埃米尔与美国总统特朗普通... 当地时间24日,卡塔尔埃米尔塔米姆与美国总统特朗普通电话,重点就中东地区局势以及伊朗与美国谈判问题交...
男子30年前被扣押2859克黄... 澎湃新闻记者 王鑫家住辽宁省大连市的潘永嘉近日向澎湃新闻反映称,三十年前,他在大连周水子机场被盖州市...
商务部:取消反制欧盟两家金融机... 中华人民共和国商务部令二〇二六年 第1号鉴于欧盟已取消对中国两家金融机构的制裁措施,现公布《关于取消...
过去24小时共有5艘船只通过霍... 总台记者当地时间24日获悉,过去24小时内,共有5艘船只通过霍尔木兹海峡,其中包括一艘伊朗油轮。(总...