首页 > 技术文章 > docker部署django+uwsgi+nginx+mariadb运行环境

focusTech 2020-06-24 09:01 原文

docker部署Django运行环境

mariadb

docker pull mariadb:10.2
mkdir /data/mysql
useradd mysql
chown -R mysql:mysql /data/mysql
docker run -itd --name maria-test -p 3306:3306 -v /usr/local/project:/root/project-e MYSQL_ROOT_PASSWORD=123456 mariadb:10.2

nginx+uwsgi+django

docker pull python:3.6
apt-get install nginx
docker commit -m "add nginx" project_nginx project-django:v1
pip3 install uwsgi
# 安装python环境
pip3 install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple/

docker run -itd --name project-django -p 8000:80 -v /usr/local/project:/root/projectpython:3.6

uwsgi配置文件

vim uwsgi.ini
[uwsgi]
#使用nginx连接时使用,Django程序所在服务器地址
# socket=ip:80

#直接做web服务器使用,Django程序所在服务器地址

#项目目录
chdir=/usr/local/project

#项目中wsgi.py文件的目录,相对于项目目录
wsgi-file=project/wsgi.py

# 进程数
processes=4

# 线程数
threads=2

# 存放进程编号的文件
pidfile=uwsgi.pid

# 日志文件,因为uwsgi可以脱离终端在后台运行,日志看不见。我们以前的runserver是依赖终端的
daemonize=uwsgi.log

uwsgi服务

uwsgi --ini uwsgi.ini  #启动
uwsgi --stop uwsgi.pid/kill -9 pid # 停止
uwsgi --reload uwsgi.pid # 重启

nginx配置

server{
	listen 80;
	server_name localhost; #主机的ip地址或域名
	index index.php index.html;
	location / {
		include uwsgi_params;
		uwsgi_pass unix:/tmp/uwsgi.socket;
		
	}
}

容器移植

docker commit -m "add uwsgi django" c3be50e17ac3 project-django:v2 #打包nginx容器
docker commit -m "add mariadb" 22013358d1d4 project-mariadb:v1 #打包mariadb容器

docker save -o /root/project-docker.tar project-mariadb:v1 project-django:v2 #打包成文件
docker load -i project-docker.tar # 生成镜像

部署

mkdir -p /data/mysql
docker run -itd --name maria-test -p 3306:3306 -v /data/mysql:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 project-mariadb:v1 #数据库容器
docker run -itd --name project-django -p 8000:80 -v /usr/local/project:/root/project project-django:v2 #web容器

进入web容器,创建数据库

/etc/init.d/nginx start

mariadb中文字符集乱码

设置配置文件

vim /etc/mysql/my.cnf

[client]

default-character-set=utf8

•编辑 /etc/my.cnf.d/mysql-clients.cnf文件,添加如下内容

[mysql]
default-character-set=utf8

•编辑 /etc/my.cnf 文件,添加如下内容

[mysqld]
character-set-server=utf8
default-storage-engine=INNODB

推荐阅读