我的项目尝试运行多个 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 上运行。 (不是 bean 茎)
任何指导将不胜感激。一旦它运行起来,我将在 Github 上分享所有内容。
最佳答案
每个应用程序一个容器,一个用于 Nginx,一个用于 Gunicorn,一个用于 Dash,一个用于 Flask。
你不需要 Docker 的主机网络,但它肯定是一个优点,因为你可以解析其他容器主机名,所以当代理传递时,你可以这样做 http://dash
如果您的 Dash 容器有 dash
主机名。
我建议使用 Docker Compose 来完成这一切,因为它会让事情变得更容易。
如果您通过 unix 套接字运行 Gunicorn,您将需要一个卷来共享给 Nginx 容器,以便它可以访问它。
不确定是否有一些与 EC2 和 Docker 相关的特殊事物,遗憾的是我没有 AWS 知识。有人会填写这个:)
关于docker - 在 Nginx、Gunicorn、Flask 和 Docker 下运行多个 Dash 应用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51735567/