Docker多镜像部署web

部署环境

     1. Nginx容器

     2. Django+uwsgi容器

     3. mysql容器

     4. CentOS 7.0系统

工具软件

     Navicat:MySQL客户端软件

          下载网址:百度下载

     MobaXterm:SSH客户端(免费版)

          下载网址:https://mobaxterm.mobatek.net/download.html

原理

     1. 客户端请求服务资源

     2. nginx直接对外服务,接收客户端发送的http请求,解包、分析

     3. 如果是静态文件请求,返回nginx配置的静态文件目录资源

     4. 如果是动态的请求,nginx通过配置文件,转发给uWSGI

     5. uWSGI将接收到的包进行处理,并转发给wsgi

     6. wsgi根据请求调用django工程的某个文件或函数,处理完后django将返回值交给wsgi

     7. wsgi将返回值进行打包,转发给uWSGI

     8. uWSGI接收后转发给nginx

     9. nginx最终将返回值返回给客户端(如浏览器)。

     *注:不同的组件之间传递信息涉及到数据格式和协议的转换

分别创建所需容器并用link连接

     nginx -> django

     django -> mysql

     project_jwweb文件夹下src为Django项目

     创建 nginx 容器 命令

          docker run           # 创建docker容器

          -it                # 可交互

          --name nginx2       # 命名

          -p 8001:80          

               端口映射,可访问宿主机IP:8001

          -v /root/opt/project_jwweb/nginx/conf:/etc/nginx

               将宿主的/root/opt/project_jwweb/nginx/conf

               映射到容器的/etc/nginx(配置文件目录)

          -v /root/opt/project_jwweb/src/static:/etc/nginx/static

          -v /root/opt/project_jwweb/src/media:/etc/nginx/media

               上面两个映射静态文件目录

          --link django2:django2

               可使容器互访,第一个是容器的名称,第二个是容器的别称

          nginx:1.13 bash  # 使用镜像并进入bash

     创建 django 容器 命令

          docker run -it  --name django2 -v /root/opt/project_jwweb/src:/code/src --link mysql2:mysql2 django:2.0 bash

     mysql 容器 命令

          docker run --name mysql2 -p 3306:3306  -v /root/opt/project_jwweb/data:/var/lib/mysql  -d  mysql:db2

配置信息

     Nginx

          修改/etc/nginx/conf.d/default.conf中的server选项

               server {

                    # 监听的端口,与上面端口映射的容器端口一致

                   listen       80;

                   server_name  localhost;

                   #charset koi8-r;

                   #access_log  /var/log/nginx/host.access.log  main;

                   location / {

                        # 下面两条配置为默认,注释掉即可

                       # root   /usr/share/nginx/html;

                       # index  index.html index.htm;

                       # 新增以下两行配置

                       # 找到uwsgi_params文件并填上路径

                       include /etc/nginx/uwsgi_params;

                       # 代理访问Django容器中的uwsgi服务

                       # link的容器名即可

                       uwsgi_pass django3:8080;

                   }

                   # 静态文件配置,将Django项目的静态文件映射到容器内部才能通过以下配置访问的到

                   # python manage.py collectstatic采集静态文件

                   location /media {

                       alias /etc/nginx/media;

                   }

                   location /static {

                       alias /etc/nginx/static;

                   }

               }


     Django配置

          先要安装uwsgi服务

               pip install uwsgi

          在manage.py的同级目录下现金uwsgi.ini配置文件

               [uwsgi]

               # 通过uwsgi访问django需要配置成http

               # 通过nginx请求uwsgi来访问django 需要配置成socket

               socket = :8001

               # Django的根目录(manage.py同级目录)

               # 写上容器内项目的绝对路径

               chdir = /code/src

               # 指定django项目自带的的wsgi配置文件位置

               module = web.wsgi

               # 允许存在主进程

               master = true

               # 开启进程数量

               processes = 3

               # 服务器退出时自动清理环境

               vacuum = true

               # 存放uwsgi日志路径

               daemonize = uwsgi.log

               # 虚拟环境路径

               virtualenv =

          或者在manage.py的同级目录下现金uwsgi.xml配置文件

              

                   :8001

                   /code/src

                   web.wsgi

                   4

                   uwsgi.log

              

     Mysql配置

          进入新建一个数据库,在Django中连接这个数据库即可

运行

     先运行uwsgi服务

     uwsgi --ini uwsgi.ini

     或 uwsgi -x uwsgi.xml

     在运行Nginx服务

     进入nginx容器中查看服务是否启动

     service nginx status

     如果未启动就执行

     service nginx start

你可能感兴趣的:(Docker多镜像部署web)