上一篇讲了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://zhangyanc.club/article/docker_django_2/
许可协议:署名-非商业性使用 4.0 国际许可协议