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