docker - 在 Nginx、Gunicorn、Flask 和 Docker 下运行多个 Dash 应用程序
问题描述
我的项目尝试运行多个 Dockerized(不限于)Dash 应用程序,这些应用程序都使用 Flask 和由 Gunicorn 提供的 HTTP WSGI,由 Nginx 代理。Plot.ly/Dash 创始人@chriddyp 和其他人对此进行了一些概述。一个要求是通过 HTTPS 为 Dash 应用程序提供服务,这可以通过简单安装的 Letsencrypt 证书轻松完成。
问题:这是否应该分为多个Docker容器,即:主容器上的Nginx,每个应用程序容器上的Dash / Flask / Gunicorn和前端代理(Nginx容器)上的SSL证书?
这是否需要 Docker SDN(软件定义网络)方法才能使其工作?
这是在 AWS 中我的普通 EC2 上运行的。(不是豆茎)
任何指导将不胜感激。一旦它工作,我将在 Github 上分享所有内容。
解决方案
每个应用程序一个容器,因此一个用于 Nginx,一个用于 Gunicorn,一个用于 Dash,一个用于 Flask。
您不需要 Docker 的主机网络,但肯定是一个加分项,因为您可以解析其他容器的主机名,所以当代理传递时,例如,http://dash
如果您的 Dash 容器有dash
主机名,您可以这样做。
我建议使用 Docker Compose 来完成这一切,因为它会让事情变得更容易。
如果你在 unix socket 上运行 Gunicorn,你将需要一个卷来共享到 Nginx 容器,以便它可以访问它。
不确定是否有一些与 EC2 和 Docker 相关的特殊内容,遗憾的是我没有 AWS 知识。有人会填写这个:)