本文已参与「新人创作礼」活动,一起开启掘金创作之路。
基于docker进行django服务部署
- 项目简介
- 从git中下载最新版本代码
- 目录结构
- log
- static
- templates
- package.json&package-lock.json
- dockerfile
- docker-compose.yaml
- pip.conf
- sources.list
- requirements.txt
- django
- bm_system
- uwsgi.ini
- supervisord.conf
- run.sh
项目简介
项目中使用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