" name="sm-site-verification"/>
侧边栏壁纸
博主头像
PySuper博主等级

千里之行,始于足下

  • 累计撰写 203 篇文章
  • 累计创建 14 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录
Web

DjangoWeb Docker化实战

PySuper
2020-06-23 / 0 评论 / 0 点赞 / 16 阅读 / 3972 字
温馨提示:
所有牛逼的人都有一段苦逼的岁月。 但是你只要像SB一样去坚持,终将牛逼!!! ✊✊✊

端口配置

docker

部署Nginx

通过上面的端口配置,你就可以发现这里的nginx做了反向代理:

在/etc/nginx/conf.d/下创建test.conf

upstream mynginx {    # 反向代理的域名
    server 192.168.43.230:19000;
}

server {
    listen 80;
    charset utf-8;
    client_max_body_size 75M;

    location /static {    # 配置静态文件访问
        alias /home/zheng/djangotest/static;    # Nginx服务器下
    }

    location / {    # 配置代理
        proxy_pass http://mynginx;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Nginx-Proxy true;
   }
}

修改/etc/nginx/nginx.conf

... ...
http {
    ... ... 
    include /etc/nginx/conf.d/djangoweb.conf;
}

部署MySQL

对于一个django的项目来说,主要修改settings.py中SQL的配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '192.168.43.230',  # 数据库主机
        'PORT': 13306,  # 数据库端口
        'USER': 'root',  # 数据库用户名
        'PASSWORD': 'root',  # 数据库用户密码
        'NAME': 'djangotest',  # 43新建数据库==> 使用xadmin
        'OPTIONS': {
            'read_default_file': os.path.dirname(os.path.abspath(__file__)) + '/my.cnf',
            'init_command': "SET sql_mode='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER'",
        },
    }
}

修改好django的MySQL配置之后,还要把MySQL的Docker运行起来

部署DjangoWeb

对于django来说,主要还是把项目文件放到镜像中,配置好环境,并开启项目

当我们使用Nginx部署的时候,少不了uwsgi:

[uwsgi]

chdir = /home/zheng/djangotest
module = djangotest.wsgi:application
wsgi-file = djangotest.uwsgi.ini
pyenv = /root/.virtualenvs/Test/bin/python
;virtualenv = /root/.virtualenvs/Test
vacuum = true
master=true
processes = 8
thread = 8
max-requests = 5000
uid = nginx
gid = nginx
http = 0.0.0.0:8000

当我们配置好之后,访问到Nginx发现无法访问到静态文件,这里我是把静态文件的目录整个放到nginx上,不知道这样处理的对不对,后续看到别的方案,再整理整理

-- 将static目录放到/etc/nginx/conf.d/test.conf中指定的静态文件目录下
docker cp ./static docker_id:/root/

挂载静态文件目录

docker run -v:-v参数指定需要从宿主机挂载到容器的目录

-- 将本机的/home/hyzhou/docker,挂载到镜像中的/data目录
sudo docker run --rm-i -t -v /home/hyzhou/docker:/data:rw ubuntu:14.04 /bin/bash

总结

这里没有使用Docker三剑客去做部署,而是一个一个docker启动,一个一个的设置映射端口的,其实使用多个docker部署没什么难度,是比较简单的,只是里面端口映射有点烦。特别是Nginx 反向代理的时候,如果你对项目的端口映射迷迷糊糊的,Nginx这里的转发映射就糊涂了。一定要弄明白每个端口是做什么的。

0
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin

评论区