Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 使用Docker配置uwsgi和nginx_Bash_Nginx_Docker_Uwsgi - Fatal编程技术网

Bash 使用Docker配置uwsgi和nginx

Bash 使用Docker配置uwsgi和nginx,bash,nginx,docker,uwsgi,Bash,Nginx,Docker,Uwsgi,我已经为python生产服务器分别配置了uwsgi和nginx。我已经用工作配置分别配置了它们。我的uwsgi单独工作正常,而nginx单独工作正常。我的问题是,我计划使用docker进行此设置,但无法同时运行uwsgi和nginx,即使我使用的是bash文件。以下是我的配置中的相关部分 Dockerfile: mysite.conf start.sh: 输出shell文件 有人能帮助我如何使用bash脚本设置它吗 您的start.sh脚本在执行这两个命令后有立即终止的风险。 这将在启动容器后

我已经为python生产服务器分别配置了
uwsgi
nginx
。我已经用工作配置分别配置了它们。我的
uwsgi
单独工作正常,而
nginx
单独工作正常。我的问题是,我计划使用docker进行此设置,但无法同时运行
uwsgi
nginx
,即使我使用的是bash文件。以下是我的配置中的相关部分

Dockerfile:

mysite.conf

start.sh:

输出shell文件


有人能帮助我如何使用bash脚本设置它吗

您的
start.sh
脚本在执行这两个命令后有立即终止的风险。
这将在启动容器后立即终止容器

您至少需要确保nginx start命令不会立即退出。
委员会:

另一种方法是保持脚本不变,但用于在
/etc/supervisor/conf.d/supervisordconf


这样,您就不会暴露于“”:停止容器将等待两个进程终止,然后再退出。

我认为有一个非常基本但重要的选择值得指出

您最初的情景是:

  • 生产环境
  • uwsgi和nginx单独运行良好
  • 用于uwsgi nginx通信的TCP套接字
我认为您不应该使用复杂的技巧在同一容器中运行两个进程

您只需在单独的容器中运行uwsgi和nginx

通过这种方式,您可以实现:

  • 功能隔离:如果您想用Apache替换Nginx,无需修改/重建/重新部署uwsgi容器
  • 资源隔离:您可以分别限制nginx和uwsgi的内存、CPU和IO
  • 松耦合:如果您愿意,您甚至可以在单独的机器上部署容器(只需要使上游服务器uri可配置)

  • 我知道这个问题是否存在,并将nginx守护进程添加到脚本中。为了清晰起见,我添加了更多的代码。请你检查一下,让我知道我错了什么?@PenkeySuresh当你说“我不能同时运行uwsgi和nginx”时,你看到了什么错误?我的构建成功,docker进程处于活动状态[当我运行docker ps时,它说它处于活动状态]。我可以在终端上看到***uWSGI正在多解释器模式下运行***。但网站还没有开通。当我进入容器(通过docker exec bash)并检查nginx服务时,它表示nginx没有运行。我已将运行uwsgi和nginx的两个命令放在同一个bash脚本中。我更改了bash脚本,以在运行uwsgi命令之前输出nginx的状态。它输出nginx未运行。在运行wsgi之后,我再次输出状态,但它根本没有被执行
      #python setup
      RUN echo "daemon off;" >> /etc/nginx/nginx.conf
      RUN rm /etc/nginx/sites-enabled/default
      RUN ln -s mysite.conf /etc/nginx/sites-enabled/
      EXPOSE 80
    
      CMD ["/bin/bash", "start.sh"]
    
    upstream django {
    # server unix:///path/to/your/mysite/mysite.sock; # for a file socket
       server 127.0.0.1:8001; # for a web port socket
    }
    
    
     server {
        listen      80;
        server_name aa.bb.cc.dd; # ip address of the server
        charset     utf-8;
    
        # max upload size
        client_max_body_size 75M;   # adjust to taste
    
        location / {
           uwsgi_pass  django;
           include     /etc/nginx/uwsgi_params; # the uwsgi_params file
        }
     }
    
    service nginx status
    uwsgi --socket :8001 --module server.wsgi
    service nginx restart  
    service nginx status  # ------- > doesn't get executed :( 
    
     nginx -g daemon off;