我的项目试图运行多个Dockerized (不受限制)的Dash应用程序,它们都使用Flask和HTTP WSGI,由Gunicorn提供服务,由Nginx代理。Plot.ly/Dash创始人@chriddyp和其他人已经概述了这一点。一个要求是通过HTTPS为Dash应用程序提供服务,这可以通过安装简单的Letsencrypt证书轻松完成。
问题:是否应该划分为多个Docker容器,即:主容器上的Nginx,每个应用容器上的Dash/Flask/Gunicorn,以及前端代理(Nginx容器)上的SSL证书?
这是否需要Docker SDN (软件定义网络)方法才能使其工作?
这是在我的亚马逊网络服务的普通EC2上运行的。(不是Beanstalk)
任何指导都将不胜感激。一旦Github起作用了,我会在Github上分享。
发布于 2018-08-08 06:07:11
每个应用程序一个容器,因此一个用于Nginx,一个用于Gunicorn,一个用于Dash,一个用于Flask。
你不需要Docker的主机网络,但这当然是一个优势,因为你可以解析其他容器的主机名,所以当代理传递时,例如,如果你的Dash容器有dash
主机名,你就可以执行http://dash
。
我建议使用Docker Compose来完成这一切,因为它会让事情变得简单得多。
如果你在unix套接字上运行Gunicorn,你需要一个卷来共享给Nginx容器,这样它才能访问它。
不确定是否有一些与EC2和Docker相关的特殊东西,因为遗憾的是我没有亚马逊网络服务的知识。有人将填写此信息:)
https://stackoverflow.com/questions/51735567
复制相似问题