python-3.x 如何使用Dokku,Nginx和guinicorn正确移植Django应用程序

xcitsw88  于 2023-04-08  发布在  Python
关注(0)|答案(1)|浏览(81)

我试图建立一个Django应用程序的开发版本,这是一个非常大的应用程序(没有文档),使用dockerfile构建在dokku上。
我不明白dokku是如何管理nginx和容器交互的,我想做的就是在我的EC2公共IP地址上建立一个http连接,为我的Django应用程序服务。
首先,为什么当我从dokku上的docker文件部署我的应用程序时,在底部它说应用程序部署到-〉地址:random_port。这个随机端口是nginx端口还是容器端口?
在处理这个之前,我的DOKKU_PROXXY_PORT被设置为随机端口,我的端口Map是80:5000。通过这些设置,我会得到nginx欢迎页面,或者端口Map80:random_port我会超时。
现在我在网上找到了说明,说要设置DOKKU_PROXXY_PORT为80,端口Map到http:80:5000,vhost到public ip。我这样做了,我认为这是正确的,因为现在我得到了一个蓝屏(我认为这是由工人不断重新启动造成的,因为redis HOST变量在www.example.com中的调用中抛出了一个错误settings.py,我还在研究如何解决这个问题)。
所以我想知道这是否正确,以及这一切是如何与dokku一起工作的?为什么我不能将domains-global设置为ip而不是vhost,为什么有些人在网上建议不要使用vhost?以及guinicorn是否会自动侦听dokku内部的5000:5000(内部容器:暴露于dokku)(我的设置显示guinicorn设置为8080,但日志显示它使用5000)。我真的很想弄清楚这一切。

93ze6v8z

93ze6v8z1#

这不是一个完整的答案,但我还不能添加评论。
已经有一段时间了,但是dokku会负责安装Nginx并为您设置反向代理。代理端口是容器的端口。但是,在这个阶段,我会说不要担心它,除非您在该端口上运行其他东西。
在域方面,我们在部署时只添加了每个添加
Dokku会自动为您设置反向代理,因此无论您添加到应用程序的域是什么,您的最终用户都可以访问,但内容来自容器。
我唯一建议的是SSL(Letsencrypt或您自己的):https://dokku.com/docs/deployment/application-deployment/#setting-up-ssl
一旦你掌握了窍门,你可以尝试复制他们的nginx模板并自定义它。

相关问题