5、基于docker进行django服务部署

167 阅读2分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

基于docker进行django服务部署

项目简介

项目中使用mysql、redis作为数据存储及缓存,部署方面使用supervisor进行管理uwsgi,通过uwsgi协调wsgi进行启动django服务,使用nginx进行所有网络服务的代理。

从git中下载最新版本代码

git clone -b 【branch name】 【project url】

目录结构

在这里插入图片描述

log

存放django运行log

static

存放django静态文件

templates

存放html模板文件

package.json&package-lock.json

commitizen及changelog工具配置文件

dockerfile

django服务镜像配置文件

docker-compose.yaml

docker-compose镜像启动配置文件

docker-compose.yaml源码

version: '3'

services:
  bm_system:
    build:
      context: .
      dockerfile: dockerfile
    image: chenxu/bm_system:latest
    container_name: bm_system
    restart: always
    ports:
      - 8001:8001
    networks:
      my-network:
        ipv4_address: "172.20.0.11"
    volumes:
      - .:/data/apps/bm_system

networks:
  my-network:
    external: true

pip.conf

配置镜像内部pip源

pip.conf

使用阿里云配置

[global]
index-url = http://mirrors.aliyun.com/pypi/simple/

[install]
trusted-host = mirrors.aliyun.com

sources.list

修改linux镜像源,此源为debian/kai的,centos及其他版本可替换该内容

deb http://mirrors.aliyun.com/debian/ buster main non-free contrib
deb-src http://mirrors.cloud.aliyuncs.com/debian/ buster main non-free contrib
deb http://mirrors.cloud.aliyuncs.com/debian-security buster/updates main
deb-src http://mirrors.cloud.aliyuncs.com/debian-security buster/updates main
deb http://mirrors.cloud.aliyuncs.com/debian/ buster-updates main non-free contrib
deb-src http://mirrors.cloud.aliyuncs.com/debian/ buster-updates main non-free contrib
deb http://mirrors.cloud.aliyuncs.com/debian/ buster-backports main non-free contrib
deb-src http://mirrors.cloud.aliyuncs.com/debian/ buster-backports main non-free contrib

requirements.txt

python项目依赖目录

django

修改过源码的django库

bm_system

项目app目录

uwsgi.ini

uwsgi配置

[uwsgi]
chdir = /data/apps/bm_system
module = bm_system.wsgi:application
master = true
processes = 2
listen=200
buffer-size = 65536
;无nginx使用http,否则使用socket
;http = 0.0.0.0:8001
socket = 0.0.0.0:8001
vacuum = true

supervisord.conf

supervisord配置

[supervisord]
nodaemon=true
logfile=/var/log/supervisor/supervisord.log
pidfile=/var/run/supervisord.pid

[supervisorctl]
serverurl=unix:///var/run/supervisor.sock

[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[program:uwsgi]
command = sh -x /data/apps/bm_system/run.sh
user = root
autostart = true
autorestart = true
stdout_logfile = /var/log/uwsgi/uwsgi_out.log
stderr_logfile = /var/log/uwsgi/uwsgi_err.log

run.sh

django服务前置及启动命令

python /data/apps/bm_system/manage.py makemigrations
python /data/apps/bm_system/manage.py migrate
/usr/local/bin/uwsgi --ini /data/apps/bm_system/uwsgi.ini