zoukankan      html  css  js  c++  java
  • docker多镜像+nginx+django环境部署

    本篇描述了使用多docker 布置django。

    其中nginx 在一个docker里面,django+uwsgi在一个docker里面。

    1   镜像来源

         nginx镜像直接从docker hub 中拉取,docker pull nginx

         diango镜像采用 https://www.cnblogs.com/huanhuaqingfeng/p/11059168.html 中配置生成的django1镜像

    2,nginx conf 配置如下:

         default.conf文件内容:

    upstream django{
             # server unix:///home/andrew/django/abuild/abulid.sock;
             server 192.168.21.59:8022;
    }

    server {
            listen 80 default_server;
            listen [::]:80 default_server;
            server_name 192.168.21.59;//宿主机ip地址
            charset utf-8;

            client_max_body_size 75M;


           location /media {
                 alias /home/andrew/testdjango/media;
           }

           location /static {
                alias /home/andrew/testdjango/static;
           }  

           location / {
               uwsgi_pass django;
               include /etc/nginx/uwsgi_params;

           }
    }

    3, uwsgi.ini 文件       

         [uwsgi]
             socket = :8000
             chdir = /home/andrew/testdjango/   //我创建的django测试工程testdjango的目录
             wsgi-file = testdjango/wsgi.py
             touch-reload = /home/andrew/testdjango/reload

             processes = 2
             threads = 4

             chmod-socket = 664
             chown-socket = testdjango:nginx

             vacuum = true

             py-autoreload=1

    4 ,  supervisord 工具使用

             生成supervisord.conf文件:

       echo_supervisord_conf > /etc/supervisord.conf

             添加我们的工程到supervisord.conf中:         

             [program:testdjango]
             command=/usr/local/bin/uwsgi --ini /home/andrew/testdjango/uwsgi.ini
             directory=/home/andrew/testdjango/
             startsecs=0
             stopwaitsecs=0
             autostart=true
             autorestart=true

    5, 启动django:

           启动django 镜像:

               docker run -it -p 8022:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash

               -p: 8022:8000 表示把宿主机的8022 端口映射到容器的8000 端口上

               -v /home/andrew/django/test/project:/home/andrew:/home/andrew/django/test/project这是宿主机的目录,下面放着我的django工程,将其挂载到容器的/home/andrew目录                  上

           启动django工程:

               在启动的容器中执行如下命令

               supervisorctl -c /etc/supervisord.conf restart testdjango

    6, 启动nginx:

          启动nginxjingx:

          docker run -it -p 8089:80 --link practical_robinson:web -v /home/andrew/django/test/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf nginx bin/bash

          --link practical_robinson:web:

                  practical_robinson: docker ps 查看,django1 镜像启动后生成的容器名字,当然也可以在运行django 镜像时通过--name指定容器的名字。

                 web:随意定义的  

          重启nginx:

              在容器中重启nginx  service nginx restart

    7,在浏览器上方位 http://192.168.21.59:8089/admin

        出现django的登录页面,ok ,成功了。

    8,nginx 容器调用多个django 容器

         1)修改default.conf

               upstream django{         
                    server 192.168.21.59:8022;

                    server 192.168.21.59:8023;
               }

          2) 启动运行

              docker run -it -p 8022:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash

              docker run -it -p 8023:8000 -v /home/andrew/django/test/project:/home/andrew ubuntu:django1 bin/bash

             docker run -it -p 8089:80 --link modest_chatelet:web1 --link cranky_liskov:web2  -v /home/andrew/django/test/nginx/conf/default.conf:/etc/nginx/conf.d/default.conf nginx bin/bash

          

  • 相关阅读:
    tomcat 闪退处理
    MVC的各个部分都有那些技术来实现?如何实现?
    jsp和servlet的区别、共同点、各自应用的范围?
    如何从CDN加载jQuery?
    window.onload()函数和jQuery中的document.ready()有什么区别?
    JQuery有几种选择器?
    jQuery 库中的 $() 是什么?
    JS 中 == 和 === 区别是什么?
    如何在JavaScript中每x秒调用一个函数
    undefined,null 和 undeclared 有什么区别?
  • 原文地址:https://www.cnblogs.com/huanhuaqingfeng/p/11075718.html
Copyright © 2011-2022 走看看