【问题标题】:Benefits of deploying using docker-compose [closed]使用 docker-compose 进行部署的好处 [关闭]
【发布时间】:2021-06-06 17:03:51
【问题描述】:

如果我在以下任何地方有错误,请纠正我。

假设我有简单的前端应用程序(React、Vue、Angular 等),然后是后端(Node.js 或任何 RestAPI 提供程序)。

我可以分别运行它们(不使用 docker),或者都使用 docker-compose 进行 dockerized。

方法一:当不使用 docker 时,我需要将我的应用程序部署到 2 个单独的服务器上。

方法 2: 使用 docker-compose 时,我可以将所有内容部署到单个服务器(如 heroku)。前端将在默认的 http 端口 80 下,后端将在端口 81 下。

我已经看到方法 2) 的一个巨大好处是我不需要为 2 个主机付费。

我的问题是:

  1. 从前端到后端的请求的两种方法的速度比较是多少(我的意思是对于像 Nuxt.js 或 Next.js 这样的服务器端渲染)。方法 2 是否会更快,因为它在同一台服务器上?
  2. 我还缺少哪些其他优点和缺点?

谢谢

【问题讨论】:

  • 您可能希望两半都在同一个主机/端口上提供服务。对于这种 2 层应用程序,最简单的方法是将前端应用程序编译为静态文件,然后从后端提供它,尽管还有其他方法。最终用户可能看不到是否使用 Docker 的性能差异。
  • 是的,但是我想使用像 Nuxt.js 这样的 SSR,因此我需要 Node.js 服务器而不是静态的

标签: docker deployment docker-compose


【解决方案1】:

无论您是否使用 Docker 和 Docker Compose,都没有理由不能将前端和后端部署到同一台服务器。

使用容器提供了一种机制,您可以通过该机制打包应用程序并将其发布到注册表,然后将它们部署到其他机器上,并且高度自信地相信它们现在和将来都会在其他机器上运行而无需更改。

如果没有 Docker,您需要提供可以在其他机器上安装应用程序的脚本或其他形式的部署,除非这些其他机器是您的开发主机的完美克隆,否则您可能需要安装其他操作系统和软件也有依赖关系。

因此,Docker 促进了应用程序的分发和打包,并有助于确保多个应用程序在单个主机上运行,​​而不会在应用程序之间发生(意外)交互。

如果您使用容器而不是 Docker Compose,您需要提供脚本(或类似的)来描述您的应用程序(组件:前端|后端)如何交互和组合:它们使用哪些端口、它们的 env 环境(变量)等。 Docker Compose 促进了这一点,并提供了一种方便的机制来描述如何将各个部分组合成一个连贯的整体。

Docker 和 Docker Compose 有功能齐全的替代品,但 Docker 和 Docker Compose 被广泛使用,您可以假设平台提供商和应用程序的潜在用户愿意|能够同时使用它们。

Docker 和 Docker Compose 都不会为您的应用增加性能开销。两者主要是控制平面(所谓的东西向)的程序员,而不是应用程序的数据平面(所谓的南北向)的程序员。

在单个服务器上运行您的应用几乎总是比在多个服务器上运行性能更高(无论您是否使用容器),因为您可以避免网络延迟,这对性能有很大贡献。

【讨论】:

  • 谢谢。我得到它。这就是我需要的。欣赏:)
  • 不客气!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-30
相关资源
最近更新 更多