当前位置: 首页 > news >正文

CICD[构建镜像]:构建django使用的docker镜像

一、使用小体积镜像构建django镜像

1.1、拉取slim镜像,安装上必要依赖

1、Dockerfile


FROM python:3.7-slim# 避免生成 .pyc 和缓冲输出
ENV PYTHONDONTWRITEBYTECODE=1 \PYTHONUNBUFFERED=1 \LANG=C.UTF-8# 设置工作目录
WORKDIR /usr/local/bin# 替换 APT 源为清华源,并安装依赖
RUN set -x && \# 清空所有已有的 sources.list 和 sources.list.d 内容rm -f /etc/apt/sources.list && \rm -rf /etc/apt/sources.list.d && \# 写入阿里云源(bookworm 视实际基础镜像版本而定)echo "deb http://mirrors.aliyun.com/debian bookworm main contrib non-free" >> /etc/apt/sources.list && \echo "deb http://mirrors.aliyun.com/debian bookworm-updates main contrib non-free" >> /etc/apt/sources.list && \echo "deb http://mirrors.aliyun.com/debian-security bookworm-security main contrib non-free" >> /etc/apt/sources.list && \# 更新源并安装依赖apt-get update && \apt-get install -y --no-install-recommends \gcc \build-essential \libpq-dev \curl && \rm -rf /var/lib/apt/lists/*# 启动命令
CMD ["/usr/local/bin/python", "--version"]

2、build.sh 构建镜像脚本

docker build -t python37-slim:v1 ./

生成的镜像名:python37-slim:v1

1.2、基于slim镜像,安装上python库

1、requirement.txt

Django==3.2.7
uWSGI==2.0.21

2、Dockerfile

FROM python37-slim:v1# 避免生成 .pyc 和缓冲输出
ENV PYTHONDONTWRITEBYTECODE=1 \PYTHONUNBUFFERED=1 \LANG=C.UTF-8# 设置工作目录
WORKDIR /app/requirement# 复制项目代码
COPY ./requirement.txt /app/requirement# 使用清华源安装 pip 包
RUN pip install --no-cache-dir --upgrade pip --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple \--trusted-host pypi.tuna.tsinghua.edu.cn \--trusted-host files.pythonhosted.org && \pip install --no-cache-dir -i https://mirrors.aliyun.com/pypi/simple \--trusted-host pypi.tuna.tsinghua.edu.cn \--trusted-host files.pythonhosted.org \-r /app/requirement/requirement.txt# 启动命令
CMD ["ls", "/usr/local/bin"]

3、build.sh  构建镜像脚本

docker build -t base-image:v1 ./

生成镜像:base-image:v1

1.3、django项目基于slim镜像,生成系统镜像

注意:在项目根目录下

1、Dockerfile

FROM base-image:v1# 避免生成 .pyc 和缓冲输出
ENV PYTHONDONTWRITEBYTECODE=1 \PYTHONUNBUFFERED=1 \LANG=C.UTF-8# 设置工作目录
WORKDIR /app/simple_sys# 复制项目代码
COPY . /app/simple_sys# 启动命令
CMD ["/usr/local/bin/uwsgi", "--ini", "/app/simple_sys/uwsgi.ini"]

2、simple_sys  : django项目

uwsgi.ini

[uwsgi]
# Django 项目配置
chdir = /app/simple_sys      
module = simple_sys.wsgi:application
home = /usr/local                 # 网络配置(推荐使用 http 方式测试)
http = :8000                       
# ;socket = 127.0.0.1:8000           # 如果要用 socket,请配合 Nginx 使用# 进程和线程配置
processes = 4                      
threads = 8                         
enable-threads = true              
master = true                      
listen = 2048                       
limit-as = 2048                    # 日志配置(注意路径权限)
logto = /app/simple_sys/logs/uwsgi.log
log-maxsize = 10485760             
vacuum = true                  # 守护进程模式(⚠️ 在 Docker 中慎用!)
# daemonize = /app/simple_sys/log/uwsgi.log

3、build.sh  构建镜像的脚本

docker build -t simple-sys:v1 ./

http://www.dtcms.com/a/267979.html

相关文章:

  • 【9】用户接入与认证配置
  • 车载智能座舱用户画像系统研究二:子系统构建
  • Linux国产与国外进度对垒
  • GANs环境应用及启发思考
  • java学习——guava并发编程练习
  • 跨平台游戏引擎 Axmol-2.7.0 发布
  • @Data、@AllArgsConstructor、@NoArgsConstructor不生效。lombok不起作用怎么解决?
  • 设置LInux环境变量的方法和区别_Ubuntu/Centos
  • 网页怎么不使用工具截图和长图
  • 《Spring AI实战:Java智能开发速成指南》
  • D435i + ROS2
  • 利用selenium获取网页数据,脚本加载慢问题的解决办法
  • CentOS环境搭建-快速升级G++版本
  • 【CSS样式】有趣的滑块开关
  • 深入理解 classnames:React 动态类名管理的最佳实践
  • 20250706-6-Docker 快速入门(上)-镜像是什么?_笔记
  • TNNLS期刊接受后,最终版提交说明
  • QT - QCustomPlot
  • Next.js面试常问内容详解
  • 【网络安全基础】第八章---电子邮件安全
  • 5种高效解决Maven依赖冲突的方法
  • 基于SpringBoot和Leaflet集成在线天气服务的区县当前天气WebGIS实战
  • 手机电工仿真软件更新了
  • Typecho主题开发指南:现代框架布局与SEO优化实践
  • 基于SSM和JSP开发的旅游系统
  • [论文阅读] 人工智能 + 软件工程 | 自然语言驱动结构代码搜索:突破DSL学习壁垒的创新方法
  • HRDNet: High-resolution Detection Network for Small Objects论文阅读
  • 7.6 hash | rust
  • 408第三季part2 - 计算机网络 - 传输层II
  • 前端开发问题:TypeError: records is not iterable