docker制作uwsgi+django镜像

本文详细介绍了如何使用Docker构建基于CentOS的基础镜像,安装Python 3.7.2和Django,以及配置UWSGI来部署Django项目。在Dockerfile中,首先安装必要的依赖,然后下载并编译Python,接着安装Django和UWSGI,并设置UWSGI的ini配置文件。最后,通过Docker构建镜像,启动容器运行项目。此外,还展示了如何保存和加载镜像以便移植。
摘要由CSDN通过智能技术生成

1、uwsgi上线django项目

uwsgi上线django项目_月半弯、沐戈的博客-CSDN博客

项目目录结构如下:

[root@100-020-gpuserver PersonEval]# ll
total 56
drwxr-x--- 2 zhangge zhangge   103 Mar 25 16:31 configfiles
drwxr-x--- 6 zhangge zhangge   180 Mar 23 17:23 configSetAPP
-rw-r----- 1 zhangge zhangge     0 Mar 15 10:26 db.sqlite3
-rw-r----- 1 zhangge zhangge  1162 Mar 29 14:49 dockerfile
drwxr-x--- 6 zhangge zhangge   180 Mar 15 15:29 evalScoreAPP
-rwxr-x--x 1 zhangge zhangge   630 Mar 12 14:08 manage.py
drwxr-x--- 3 zhangge zhangge   108 Mar 15 10:22 PersonEval
drwxr-x--- 3 zhangge zhangge    35 Mar 26 16:45 uwsgi

2、docker生成镜像文件时执行的文本文件dockerfile(位于项目根目录之下)

FROM centos:centos7
# 安装python3.7.2
RUN yum -y install openssl-devel bzip2-devel expat-devel gdbm-devel readline-devel sqlite-devel libffi-devel
#安装make编译所需的gcc,g++编译器
RUN yum -y install gcc automake autoconf libtool make wget
# 删除centos7自带的旧版python
RUN set -ex \
    && cd /usr/bin \
    && mv python python.bak

RUN mkdir -p /usr/local/python3
RUN wget https://www.python.org/ftp/python/3.7.2/Python-3.7.2.tgz

RUN set -ex \
        && tar -zxvf  Python-3.7.2.tgz \
        && cd Python-3.7.2 \
        && ./configure prefix=/usr/local/python3 \
        && make && make install \
        && ln -s /usr/local/python3/bin/python3.7 /usr/local/bin/python3 \
        && ln -s /usr/local/python3/bin/pip3 /usr/local/bin/pip3

RUN set -ex \
        && cd /usr/local/python3 \
        && python3 -V

RUN mkdir -p /usr/src/PersonEval
WORKDIR /usr/src/PersonEval
COPY pip.conf ~/.pip/pip.conf
#可以通过requirements.txt文件安装,方法见https://blog.csdn.net/Mugo_Moon/article/details/114981204
#建议安装低版本django,以免系统带的SQLite版本无法使用
RUN pip3 install --default-timeout=1000 django==2.1.8
RUN pip3 install --default-timeout=1000 uwsgi
RUN ln -s /usr/local/python3/bin/uwsgi /usr/bin/uwsgi
COPY . /usr/src/PersonEval
#也可通过进入docker交互终端运行uwsgi命令
CMD ["uwsgi", "--ini", "/usr/src/PersonEval/uwsgi/uwsgi.ini"]

3、uwsgi.ini文件配置(位于uwsgi文件夹之下)

# uwsig使用配置文件启动
[uwsgi]
master = true
# 设置进程 processes/workers
# processes = 2
workers = 2
# 项目所在的根目录
chdir=/usr/src/PersonEval/
# 指定项目的application,区别于启动命令--wsgi-filemysite/wsgi.py
module=PersonEval.wsgi:application

#the local unix socket file than commnuincate to Nginx
# 指定sock的文件路径,这个sock文件会在nginx的uwsgi_pass配置,用来nginx与uwsgi通信
# 支持ip+port模式以及socket file模式
#socket=%(chdir)/uwsgi_conf/uwsgi.sock
http = 0.0.0.0:8000

# 存放进程编号的文件
pidfile=/usr/src/PersonEval/uwsgi/uwsgi.pid
# 重启的时候使用的 pid 号
touch-reload = /usr/src/PersonEval/uwsgi/uwsgi.pid

# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。以前的runserver是依赖终端的
# daemonize和logto的区别是,前者会使uwsgi作为守护进程运行。如果你的uwsgi进程由systemd或supervisor等管理工具管理,那么使用logto,否则使用daemonize。
# docker时使用systemd日志文件,因此使用logto,若使用daemonize将无法通过CMD启动主程序
daemonize = /usr/src/PersonEval/uwsgi/logs/uwsgi.log
#logto = /usr/src/PersonEval/uwsgi/logs/uwsgi.log
#自动移除unix Socket和pid文件当服务停止的时候
vacuum=true

autostart = true
startsecs = 5
autorestart = true
startretries = 3
#evil-reload-on-as = 16000
#evil-reload-on-rss = 16000

# post 请求超过 字节 就缓存值磁盘
post-buffering = 8192

# 缓冲区大小
buffer-size = 32768

4、镜像

# 建立镜像
[root@100-020-gpuserver PersonEval]# docker build -t personaleval:v0.3 .
# 查看镜像
[root@100-020-gpuserver PersonEval]# docker images
# 运行镜像
[root@100-020-gpuserver PersonEval]# docker run -d -it -p 8000:8000 personaleval:v0.3
# 若dockerfile中没有CMD命令,可通过以下方式启动
## 查看container ID
##[root@100-020-gpuserver PersonEval]# docker ps
##[root@100-020-gpuserver PersonEval]# docker exec -i -t  container的ID号 /bin/bash
## 通过uwsgi命令启动django项目
##[root@9f10753d1e8b PersonEval]# uwsgi --ini uwsgi/uwsgi.ini

5、镜像移植

#保存镜像
[root@100-020-gpuserver Djgango_example]# docker save container的ID -o ./personaleval-save-0322.zip personeval:v0.3
#加载镜像
[root@65-035-GPU ~]# docker load < personaleval-save-0322.zip

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值