首页 > 解决方案 > 在 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 上分享所有内容。

标签: dockernginxamazon-ec2plotly-dash

解决方案


每个应用程序一个容器,因此一个用于 Nginx,一个用于 Gunicorn,一个用于 Dash,一个用于 Flask。

您不需要 Docker 的主机网络,但肯定是一个加分项,因为您可以解析其他容器的主机名,所以当代理传递时,例如,http://dash如果您的 Dash 容器有dash主机名,您可以这样做。

我建议使用 Docker Compose 来完成这一切,因为它会让事情变得更容易。

如果你在 unix socket 上运行 Gunicorn,你将需要一个卷来共享到 Nginx 容器,以便它可以访问它。

不确定是否有一些与 EC2 和 Docker 相关的特殊内容,遗憾的是我没有 AWS 知识。有人会填写这个:)


推荐阅读