千家信息网

Django容器(上): 自定义基础镜像

发表于:2025-01-23 作者:千家信息网编辑
千家信息网最后更新 2025年01月23日,开始之前某个 Python 项目,基于 Python:3.6 与 Django:1.11 框架开发,希望项目能够容器化,然后可以通过 docker-compose 等工具编排容器/应用,本篇文章的目标
千家信息网最后更新 2025年01月23日Django容器(上): 自定义基础镜像
开始之前

某个 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.0Docker主机: 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-baseFROM python:3.6MAINTAINER dongnan #<@微信公众号:运维录># aptCOPY conf/sources.list /etc/apt/sources.listRUN apt-get update \    && apt-get install -y supervisor nginx \    && apt-get clean \    && rm -r /var/lib/apt/lists/*# envENV 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    767kBStep 1/8 : FROM python:3.6# ...省略Successfully built fc3f6f242301Successfully 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]

镜像 基础 项目 容器 文章 工具 文件 管理 仓库 作用 模块 环境 工作 应用 支持 相同 专题 主机 代码 公众 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 进行文献传递的数据库是 网络技术选型策略有哪些 浦口区常规软件开发售后服务 魔兽世界数据库 多玩 湖北服务器硬盘哪里买 考数据库三级考试该看什么书 连接imap服务器错误怎么弄 贵州日月东方网络技术有限公司 计算机应用和网络技术学什么 网络技术员的升职名称 网络安全集中治理专题 暗黑3服务器断开 有的软件老显示服务器版本低 天津信息化软件开发价格大全 淮安视频分布式存储数据库 滨州销售软件开发服务 专科学大数据好还是软件开发 赤潮游戏服务器验证超时 问道手游双系统服务器有哪些 判断数据库是否插入成功 陕西武峰科技网络技术 怎样申请软件开发 世新软件开发有限公司 魔兽世界服务器时间表 新数据库技术 智能家电网络安全问题 pubg在中国是哪个服务器 二手监控服务器 服装库存软件开发 英雄联盟哪个大区服务器在天津
0