前言
在win10简单的使用Docker打包那纯属玩蛇,真正的部署还是要在Centos,这里为什么要用gunicorn呢,因为uwsgi还要编写配置文件,比较麻烦,所以我偷个懒使用gunicorn,日后有时间再讲解uwsgi
Nginx呢,就好像一层缓冲墙,使用Nginx来反向代理,就相当于用户不能直接访问服务器,而是先访问Nginx,由Nginx来负责分发。
Nginx的默认策略就是轮询,按照顺序发送,如果服务器要横向扩展,按照顺序一个个的发送,如果服务器配置高低不一,可以将策略改为加权。根据服务器的配置来设置阈值,增加容灾性。
开始操作
首先呢,就是将项目打包,具体流程不再赘述了,请观阅拙作:Docker部署Django项目
然后,注册Dockerhub,类似gitee和github的仓库:[地址][https://hub.docker.com/]

- 创建仓库

- 然后呢,我们需要对本地的镜像名重命名
docker tag 本地镜像名 仓库拥有者/仓库名
例如:
docker tag mydjango godhearing/mydjango
- 之后在命令行输入命令
docker login
- 使用dockerhub的账号密码登录

这里我是登录过了,输入账号密码后出来这个就是登录成功了
然后将本地镜像上传到dockerhub中
docker push godhearing/mydjango
然后登录你的云服务器,然后安装docker服务
#升级yum sudo yum update #卸载旧版本docker sudo yum remove docker docker-common docker-selinux docker-engine #安装依赖 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 #设置源 sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo sudo yum makecache fast #安装docker sudo yum install docker-ce #启动服务 sudo systemctl start docker
安装完成后键入
docker -v
如果出来版本号就说明没有问题
然后从dockerhub把镜像拉下来
采用后台守护进程模式起服务
sudo docker run -d -p 8000:8000 --name 自定义镜像名 镜像名 例如: sudo docker run -d -p 8000:8000 --name testdjango godhearing/mydjango
可以使用
docker ps
来查看是否运行成功然后访问一下
ok,没有问题,额。。。也不能叫没有问题,因为我的mysql是本地的,没有更改,不过也还可以啦,总之,项目呢,是部署的没有问题了。不要在意这些细节
然后呢,我们安装Nginx服务
docker pull nginx
然后启动
docker run -d -p 80:80 nginx
现在,我们将运行Nginx容器里的配置文件copy到宿主机里面(拉到本地)
docker cp 容器id:/etc/nginx/conf.d/default.conf /root/default.conf
复制出来之后,输入命令修改这个nginx配置
vim /root/default.conf
将Gunicorn配置加到里面
server { listen 80; server_name localhost; #charset koi8-r; #access_log /var/log/nginx/host.access.log main; location / { proxy_pass http://你的服务器公网ip:5000; # 这里是指向 gunicorn host 的服务地址 proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
修改完配置文件之后,关掉运行的nginx服务容器,并且删掉它
docker stop 容器id docker rm $(docker ps -a -q)
然后再次启动nginx,通过-v来进行挂载,就是将宿主机的文件替换Docker容器内部的文件,达到修改的效果
docker run --name mynginx -d -p 80:80 -v /root/default.conf:/etc/nginx/conf.d/default.conf nginx
重新启动成功后,访问服务器ip即可
ok完毕,比原始命令行shell安装不知快了多少倍
- Post link: https://www.godhearing.cn/dockerhub-bu-shu-centos-nginx-gunicorn-django-du-li-jia-gou/
- Copyright Notice: All articles in this blog are licensed under unless otherwise stated.