python manage.py migrate&&
gunicorn my_blog.wsgi:application -c gunicorn.conf
六. 构建 nginx 容器环境
1. nginx 容器 Dockefile 编写

创建并编写 nginx 文件夹下的 Dockerfile
# nginx镜像
FROM daocloud.io/nginx# 删除原有配置文件,创建静态资源文件夹和ssl证书保存文件夹
RUN rm /etc/nginx/conf.d/default.conf
&& mkdir -p /usr/share/nginx/html/static
&& mkdir -p /usr/share/nginx/html/media
&& mkdir -p /usr/share/nginx/ssl
# 添加配置文件
ADD ./nginx.conf /etc/nginx/conf.d/
2. 配置 nginx.conf
nginx.conf用于反向代理域名或者 ip,将动态请求分发至内部的 django 容器的8000端口,并配置静态资源路径。
配置反向代理时,注意 host 一定要改为 web,web即是django容器的名称(在docker-compose.yml中配置)
# 仅用于本地docker环境测试(80端口代理http请求)
server {
listen 80; # 监听80端口
server_name 127.0.0.1; # 生产环境请换成域名
location / {
proxy_pass http://web:8000; # 反向代理 django容器8000端口,web为django容器名称,切记不要写域名或者ip
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
location /static/ {
alias /usr/share/nginx/html/static/; #静态资源路径
}
location /media/ {
alias /usr/share/nginx/html/media/; #上传文件路径
}
}七. 配置 mysql
1. 编写 my.cnf 文件
my.cnf 文件用于初始化 mysql 配置,这个文件将被挂载到容器中。
[mysqld]user=mysql
default-storage-engine=INNODB
character-set-server=utf8
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
[client]default-character-set=utf8
[mysql]default-character-set=utf82. 导入初始化 sql 文件(不需要导入初始数据库的小伙伴可以忽略此步骤)
将需要导入的sql文件放入init目录下,并修改其名称为init.sql
八. 利用 docker-compose 编排容器
编写 docker-compose.yml
version: "3"
services:
redis:
image: daocloud.io/redis:3
command: redis-server
volumes:
- ./deployment/redis:/data
ports:
- "6379:6379"
restart: always # always表容器运行发生错误时一直重启 db:
image: daocloud.io/mysql:5.7
environment:
- MYSQL_DATABASE=my_blog # 数据库名称
- MYSQL_ROOT_PASSWORD=19960331 # 数据库密码










