目录
前言
1.修改docker镜像源
2.创建docker容器
核心docker操作:卷挂载、端口映射、容器间连接、Dockerfile编写
2.1 Python容器卷挂载
docker run --name django_ob -it -v /home/zhou/Desktop/my_object:/home/zhou/ python:3.8.5 /bin/bash
2.1.1 nginx配置
nginx安装
2.1.2 uwsgi配置
2.1.3 uwsgi与nginx文件配置与连接
nginx参数说明:https://blog.csdn.net/weixin_42083036/article/details/109773936
2.2 Mysql容器创建
docker run -p 3306:3306 --name mysql_ob -e MYSQL_ROOT_PASSWORD=zlk10086 -d mysql
docker run是启动容器的命令
--restart=always: 配置此项后, 当 Docker 重启时,容器总是可以自动启动, 其它参数可以参考:[no,on-failure,always]
no为默认值,表示容器退出时,docker不自动重启容器
on-failure表示,若容器的退出状态非0,则docker自动重启容器,还可以指定重启次数,若超过指定次数未能启动容器则放弃:
always表示,只要容器退出,则docker将自动重启容器
--privileged=true : 使用该参数,container内的root拥有真正的root权限, 否则,container内的root只是外部的一个普通用户权限
--name:指定了容器的名称,方便之后进入容器的命令行
-d:d指的是在后台运行。 也可以使用-idt,i是交互式操作,t是一个终端,
-p:指在本地生成一个随机端口,用来映射mysql的3306端口
-e:设置环境变量
MYSQL_ROOT_PASSWORD=emc123123:指定了mysql的root密码
mysql:5.7:指运行mysql镜像及tag
-v :表示挂载, 持久化存储的关键所在
2.2.1 安装navicat
2.2.2 navicate连接docker中的mysql容器
核心:主机ip要填写容器ip,容器ip可以通过docker inspect mysql容器ID
查询,ip在参数名为IPAddress
的位置.
2.2.3 Python与Mysql的连接
直接将项目中的setting.py中DATABASES的host改为mysql的ip即可建立访问.
3.补充linux操作
- 创建快捷链接:
ln -s /etc/issue /tmp/issue.soft :创建/etc/issue文件的软链接/tmp/issue.soft
4.总结
对于在本地可以运行的django项目来说,部署时候会遇到各种问题.在此可以做一下总结.
- 项目内部路径问题
- nginx与uwsgi配置文档
- 项目依赖包
之后的项目如何开发部署?
1. 完整项目文件包
2. 云服务器配置好docker与容器
3. 配置好nginx与uwsgi
4. 调试
一些报错
1.linux内无法import cv2
sudo apt-get install python-opencv
2.[ FAIL] Starting nginx: nginx failed!
查看ini文件问题:nginx -t
3.uwsgi打开则nginx就无法打开
4.nginx内日志出现如下错误提示
将uwsgi.ini中的http注释掉,且socket改为容器ip:port