Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
django+;docker中的uwsgi_Django_Docker_Nginx_Uwsgi - Fatal编程技术网

django+;docker中的uwsgi

django+;docker中的uwsgi,django,docker,nginx,uwsgi,Django,Docker,Nginx,Uwsgi,在docker中部署Django应用程序的最佳方式是什么。我查看了几个博客,在大多数示例中,似乎每个人都试图将nginx+django+uwsgi放在一个容器中 但容器应该只有一个进程。所以我在一个容器中尝试django和uswgi,而nginx在另一个容器中或主机上 请告诉我最好的方法 注:我的django应用程序只是为我提供RESTAPI结果。我没有使用Django模板来处理我的静态内容 我也在寻找使用https实现所有这些功能。 如果有人已经实现了类似的django应用程序托管方式,请共享

在docker中部署Django应用程序的最佳方式是什么。我查看了几个博客,在大多数示例中,似乎每个人都试图将nginx+django+uwsgi放在一个容器中

但容器应该只有一个进程。所以我在一个容器中尝试django和uswgi,而nginx在另一个容器中或主机上

请告诉我最好的方法

注:我的django应用程序只是为我提供RESTAPI结果。我没有使用Django模板来处理我的静态内容

我也在寻找使用https实现所有这些功能。
如果有人已经实现了类似的django应用程序托管方式,请共享博客或github链接

大多数NGINX+uWSGI设置之间的桥接点是uwsgiunix套接字。 这将作为文件系统上的文件公开。(您也可以使用WSGIoverTCP套接字)

如果要运行两个容器,它们都需要具有包含此套接字的文件系统或网络的视图

在普通docker中,您可以将相同的卷或主机目录绑定到两个容器中,以完成您所说的内容。uWSGI将在此路径中创建套接字,NGINX将通过套接字与uWSGI服务器通信:

docker run -v /app/uwsgi/:/app/uwsgi/ my-uwsgi-server-image --socket /app/uwsgi/uwsgi.sock
docker run -v /app/uwsgi/:/app/uwsgi/ nginx
  # your nginx config should set the django upstream to use "/app/uwsgi/uwsgi.sock"

在kubernetes中,您可以使用卷和卷数在一个Pod中使用多个容器完成相同的任务。

看起来像是一条老线索,但也许有人会找到解决他/她的问题的答案

如果您不使用任何静态内容服务,或者出于不同的特定原因需要nginx服务,那么您就不需要nginx服务

uwsgi
可以作为简单的http服务器工作

见文件:

my
Dockerfile
中的CMD命令示例:

CMD ["uwsgi", "--http-socket", ":8000", "--py-autoreload", "1", "--module", "app.wsgi:application"]
用于更简单视图的命令:

uwsgi --http-socket :8000 --py-autoreload 1 --module app.wsgi:application
上述配置仅用于本地开发


在将其应用于项目之前,先采用它以满足您的环境要求。

套接字不需要是文件。定义地址和/或端口允许在不依赖共享卷的情况下分离Nginx+uwsgi。是的,网络开销的费用最低,但是几乎可以肯定的是,不要求容器在同一主机/pod中运行所获得的灵活性是值得的。谢谢James——我更新了答案,以说明您可以通过TCP使用WSGI。看看这个链接,还有一个容器进程是一种常见做法,但它与宗教不同。也请确保您是将数据库卷装载到本地卷,以便在容器被销毁时不会丢失数据请参见[this]()