Docker部署Django博客项目(二)

部署容器

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

root@VM-0-14-root: ~$:/home/Blog# sudo docker-compose up -d
Creating network "Blog_my_backend" with driver "bridge"
Creating network "Blog_my_frontend" with driver "bridge"
Creating mysql_5.7.28    ... done
Creating web_mysite      ... done
Creating nginx_1.17.9    ... done

运行之后查看所有容器的状态

初始化数据库

所有容器启动完成,数据库都是空的,需要初始化一下

# 初始化数据库
root@VM-0-14-root: ~$:/home/Blog# docker exec -it web_mysite python manage.py makemigrations
root@VM-0-14-root: ~$:/home/Blog# docker exec -it web_mysite python manage.py migrate
# 收集静态文件
root@VM-0-14-root: ~$:/home/Blog# docker exec -it web_mysite python manage.py migrate collectstatic
# 创建管理员
root@VM-0-14-root: ~$:/home/Blog# docker exec -it web_mysite python manage.py createsuperuser

数据库备份与还原

备份宿主机mysql数据

root@VM-0-14-root: sudo mysqldump -u root -h 127.0.0.1 -P 3306 -p dbname > ./bak.sql
Enter password:

导入备份数据到容器Mysql中

root@VM-0-14-root: sudo mysql -h 192.110.0.2 -u root -p dbname < ./bak.sql
Enter password:

Mysql数据库定时备份参考:Ubuntu设置定时任务自动备份mysql

 

(1)备份所有的数据库

root@VM-0-14-root: sudo mysqldump -u root -p --all-databases > bak.sql

(2)备份指定的数据库db1、db2以及db3

root@VM-0-14-root: sudo mysqldump -u root -p --databases db1 db2 db3 > bak.sql

(3)备份db数据库,当仅备份一个数据库时,--databases可以省略

root@VM-0-14-root: sudo mysqldump -u root -p db4 > bak.sql
root@VM-0-14-root: sudo mysqldump -u root -p --databases db4 > bak.sql

部署过程遇到的问题:

1. docker创建uwsgi启动容器后立马退出
Docker容器同时只能管理一个进程,如果这个进程退出那么容器也就退出了,但这不表示容器只能运行一个进程(其他进程可在后台运行),但是要使容器不退出必须有一个前台执行的进程。
那么在docker中使用uwsgi时,如果在uwsgi.ini配置文件中指定了daemonize参数,容器的uwsgi应用的日志将会输出到指定的文件, 进程会在后台运行,而不是在前台运行,这样就造成通过docker run启动或者compose启动时容器立刻退出的情况

 

个人博客网站

你可能感兴趣的:(Docker)