我试图从部署一个旨在在桌面用户上运行的应用程序的角度开始围绕 Docker 进行思考。我的应用程序只是一个烧瓶 Web 应用程序和 mongo 数据库。通常我会在虚拟机中安装两者,并将主机端口转发到来宾 Web 应用程序。我想尝试一下 Docker,但我不确定我打算如何使用多个程序。文档说只能有 ENTRYPOINT,所以我怎么能拥有 Mongo 和我的烧瓶应用程序。或者它们是否需要在单独的容器中,在这种情况下它们如何相互通信以及这如何使分发应用程序变得容易?
只能有一个 ENTRYPOINT,但该目标通常是一个脚本,它可以启动所需的尽可能多的程序。您还可以使用例如Supervisord或类似工具来负责在单个容器内启动多个服务。这是一个在单个容器中运行 mysql、apache 和 wordpress 的 docker 容器示例。
假设您有一个数据库供单个 Web 应用程序使用。那么在单个容器中运行两者可能更容易。
如果您有一个由多个应用程序使用的共享数据库,那么最好在其自己的容器中运行数据库,并在各自的容器中运行应用程序。
当应用程序在不同的容器中运行时,至少有两种可能性可以相互通信: