Mysql 关于数据库的Docker多应用服务器体系结构
我有一个运行5或6个小型Rails应用程序的服务器。他们所有的附件都在S3上,他们都使用MySQL作为数据库。每个应用程序都有自己的用户并运行一些Thin。有一个nginx服务器负责负载平衡和域路由 我计划用Docker安装来替换这个服务器:一个服务器,每个应用程序有一个容器,前面有一个nginx 我的问题是:你会把数据库部分放在哪里 我主要看到4种可能性: 1) 每个应用程序容器内有一个Mysql服务器。我想这不是Docker的哲学。这将需要对每个容器的数据进行单独备份 2) 用于所有应用程序的唯一MySQL容器 3) 主机Docker服务器上的标准MySQL安装 4) 为所有应用程序提供单独的MySQL服务器 你会怎么做Mysql 关于数据库的Docker多应用服务器体系结构,mysql,ruby,architecture,docker,Mysql,Ruby,Architecture,Docker,我有一个运行5或6个小型Rails应用程序的服务器。他们所有的附件都在S3上,他们都使用MySQL作为数据库。每个应用程序都有自己的用户并运行一些Thin。有一个nginx服务器负责负载平衡和域路由 我计划用Docker安装来替换这个服务器:一个服务器,每个应用程序有一个容器,前面有一个nginx 我的问题是:你会把数据库部分放在哪里 我主要看到4种可能性: 1) 每个应用程序容器内有一个Mysql服务器。我想这不是Docker的哲学。这将需要对每个容器的数据进行单独备份 2) 用于所有应用程序
PS:我知道Docker还没有准备好生产,我计划现在就用它来做舞台表演,如果我对它满意的话就换一台。这取决于几个因素。这里有一些问题可以帮助您做出决定
- 5-6个应用程序是否非常相似(即,在Docker术语中,您可以基于一个通用映像),您是否考虑部署更多应用程序,和/或将其中一些应用程序迁移到其他服务器
- 是的:那么将MySQL服务器嵌入到每个应用程序中是有意义的,因为它将“粘住”应用程序,只需最少的配置工作
- 否:那么就没有令人信服的理由嵌入MySQL服务器了
- 您希望能够扩展这些应用程序(即多个容器上单个应用程序的负载平衡请求),还是扩展MySQL服务器(例如,主/从复制设置)
- 是:那么您就不能嵌入MySQL服务器,否则,扩展一层会扩展另一层,这将导致令人头痛的问题
- 否:那么没有什么可以阻止您嵌入MySQL服务器
- 你认为这些应用中至少有一个会有很大的数据库负载吗
- 是:那么你可能想使用单独的MySQL服务器,因为一个应用程序可能会妨碍其他应用程序
- 否:然后您可以使用单个MySQL服务器
我不会在主机上部署MySQL;如果你想安装一个MySQL,你可以通过运行一个MySQL容器并使用
-p3306:3306
(它会将主机的3306/tcp
端口路由到MySQL容器的3306/tcp
端口)来实现相同的结果。因为5或6个应用程序如你所述很小,出于两个原因,我肯定会排除为每个容器安装单独MySQL的选项:
容器,因此使用专用的MySQL容器是更好的选择。谢谢!是的,除了Rails和Ruby版本之外,这些应用程序都很相似,只是标准的Rails应用程序及其依赖项。不需要扩展或复制,只需要一些基本的(几乎是遗留的)网站,功能很少。当选择直接在Docker主机上运行MySQL时,容器能够轻松连接到它吗?仅通过127.0.0.1?是的,通过
卷
。我使用1个docker mysql容器和多个使用它的应用程序,也在容器中。主机只安装了docker。是的,只需将MySQL的IP/端口作为环境变量传递给将使用它的docker容器(不是127.0.0.1)@Majkinator,他询问直接在主机上运行MySQL,即在docker容器外部