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

发布于:2025-07-07 ⋅ 阅读:(18) ⋅ 点赞:(0)

一、使用小体积镜像构建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 ./


网站公告

今日签到

点亮在社区的每一天
去签到