上一篇讲了docker镜像的拉取和django项目配置文件的编写,本次正式介绍项目的部署和数据迁移

部署容器

在izone_docker目录下执行部署容器命令(加 -d 是后台运行)

~$:/home/izone-docker# docker-compose up -d
Creating network "izone-docker_frontend" with driver "bridge"
Creating network "izone-docker_backend" with driver "bridge"
Creating izone_redis ... done
Creating izone_db    ... done
Creating izone_web   ... done
Creating izone_nginx ... done

运行之后查看所有容器的状态,up表示正在运行中

~$:/home/izone-docker# docker ps -a
   Name                  Command               State                    Ports                  
-----------------------------------------------------------------------------------------------
izone_db      docker-entrypoint.sh mysqld      Up      3306/tcp, 33060/tcp                     
izone_nginx   nginx -g daemon off;             Up      0.0.0.0:443->443/tcp, 0.0.0.0:80->80/tcp
izone_redis   docker-entrypoint.sh redis ...   Up      6379/tcp                                
izone_web     gunicorn izone.wsgi -b 0.0 ...   Up

初始化数据库

所有相关的容器都已经启动,但数据库都是空的,需要初始化一下

# 初始化数据
~$:/izone-docker# docker exec -it izone_web python manage.py makemigrations
~$:/izone-docker# docker exec -it izone_web python manage.py migrate
# 收集静态文件
~$:/izone-docker# docker exec -it izone_web python manage.py collectstatic
# 初始化搜索索引
~$:/izone-docker# docker exec -it izone_web python manage.py update_index
# 创建管理员账号
~$:/izone-docker# docker exec -it izone_web python manage.py createsuperuser

导入备份数据

在迁移服务之前,备份好数据库

~$ mysqldump -u root -p dbname > /home/backdb.sql

将备份好的sql数据,从主机拷贝到容器内

~$ docker cp /home/backdb.sql izone_db:/tmp/

然后登陆数据容器

~$ docker exec -it izone_db bash
# 登录容器后前缀会展示容器id
root@7a0594f8d1d6:/#

在容器中执行备份文件导入操作

root@7a0594f8d1d6:/# mysql -u root -p -D $MYSQL_DATABASE --default-character-set=utf8 < /tmp/backdb.sql

所有操作完成之后,退出当前数据库容器(输入exit即可退出),重启所有容器服务

~$:/izone-docker# docker-compose down
~$:/izone-docker# docker-compose up -d

部署总结

到这里就结束了docker-django项目的部署,相比较以前的部署方式简便了很多,不需要重新配置开发环境。 后续只要配置固定有了自己的镜像,可以迅速完成部署,下面再回顾下部署过程

  • 老服务器备份数据库数据

  • 新服务器下载镜像,完成配置文件

  • 启动容器,初始化数据库、静态文件等

  • 导入备份好的数据库,再次重启

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:http://example.com/article/docker_django_2/