linux - 是否可以在单个 NGINX 容器中托管多个 Web 应用程序容器?
问题描述
我对这个主题完全陌生,我将解释我想要做什么。
+-------+
+---------+ NGINX +-----------+
| +-------+ |
| | |
+---+----+ | |
|JENKINS | +----+----+ +----+---+
+--------+ |FLASK APP| | VUE APP|
+---------+ +--------+
创建一个新服务器我决定组织和使用更好的工具来帮助每天做出更好的开发。我的想法是使用 Jenkins 来帮助部署我的应用程序,上面我给出了Flask (PYTHON)和Vue (JS)的示例,但我正在描绘几个应用程序。
NGINX
是dockerize,什么是正确的?dockerize 所有这些应用程序(FLASK,JENKINS,VUE)还是仅 WebServer?
我读过一次可能使多个容器在它们之间进行通信,但我不知道它是否符合这个想法
解决方案
你可以将任何你想要的东西放在一个容器中,但你应该在其中只有一个进程。当我查看该图时,我看到了四个容器,可能还有一个 Docker Compose 或 Kubernetes 配置,以正确地以正确的顺序启动它们。
由于容器的工作方式,如果主进程未能通过健康检查,则整个进程将被终止并重新启动。如果 3/4 的服务正常运行,这可能会造成极大的破坏。
它也很复杂:
- 像现在这样构建容器,您的容器是所需大小的 4 倍,这使得启动、停止、拉动和推动更慢
- 每次这些应用程序中的任何代码行发生更改时,都必须重新构建整个容器,这意味着您需要更频繁地构建
- 使用统一容器不可能回滚其中的一部分,除非您使用必要的特定版本重建容器
简而言之,不要这样做。有四个小容器。
推荐阅读
- python-poetry - Poetry 看到一个间接依赖(python 的 numpy)已经过时,但没有更新它
- php - 没有正确重新散列
- c++ - 如何将默认值设置为同一类中的某个值?
- reactjs - 找不到模块“下一个”或其相应的类型声明
- django - 如何在 django 模型中获取对象编号
- java - Reactor - 单线程有状态转换
- reactjs - React Hooks SetState 方法根本不更新状态
- flutter - 从静态方法访问私有方法
- c - 结构的属性是否有占位符?(C)
- javascript - 即使启用了methods = [“POST”],“方法不允许请求的URL也不允许该方法”?