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

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.xdnf.cn/news/14864.html

相关文章:

  • Linux proxy设置
  • 2048小游戏实现
  • PADS交互式布局
  • 查看linux中steam游戏的兼容性
  • Python练习Day1
  • 【Elasticsearch】检索排序 分页
  • vue router 里push方法重写为什么要重绑定this
  • FLUX.1-Kontext 高效训练 LoRA:释放大语言模型定制化潜能的完整指南
  • 相机位姿估计
  • 一文讲清楚React中Refs的应用
  • 成为git砖家(12): 看懂git合并分支时冲突提示符
  • Python 机器学习核心入门与实战进阶 Day 3 - 决策树 随机森林模型实战
  • vue 条件渲染(v-if v-else-if v-else v-show)
  • 时域与频域信号特性分析——DFT归一化与双边谱合并分析
  • Kali Linux Wifi 伪造热点
  • SpringBoot:整合quartz实现定时任务-集群化配置
  • 温湿度变送器与电脑进行485通讯连接并显示在触摸屏中(mcgs)
  • Visual Studio 2022 MFC Dialog 添加Toolbar及Tips提示
  • 【算法刷题记录(简单题)002】字符串字符匹配(java代码实现)
  • 补充:问题:CORS ,前后端访问跨域问题
  • Java Go SDK 管理工具与最佳实践
  • 《Java修仙传:从凡胎到码帝》第四章:设计模式破万法
  • PageRank:互联网的马尔可夫链平衡态
  • CSS 文字浮雕效果:巧用 text-shadow 实现 3D 立体文字
  • 【内存】Linux 内核优化实战 - net.ipv4.tcp_tw_reuse
  • springBoot接口层时间参数JSON序列化问题,兼容处理
  • STM32F103RCTx的PWM输出控制电机
  • Matplotlib 安装部署与版本兼容问题解决方案(pyCharm)
  • 共射级放大电路的频率响应Multisim电路仿真——硬件工程师笔记
  • C++11 forward_list 从基础到精通:原理、实践与性能优化