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