如何在docker上运行三层应用程序,使用流浪汉在三个不同的centos上运行



我正在开发Vagrant,并试图创建三层Web应用程序,我使用相同的流浪文件在Vagrant上安装了3个Centos。

每个Centos都有docker,1个Centos有数据库,2个Centos有php-apache服务器,3个Cenos有php-atache和客户端代码来显示结果。

这三个都是同步的,工作正常,但当我为第一个MYSQL数据库创建docker容器时,我可以在同一个Vm上本地连接它,但不能通过第二个Vm与apache和PHP连接。

有人能帮我吗

此外,我必须在Docker compose上测试这个三层web应用程序。

我该怎么做?我必须在不同的虚拟机上运行所有3个吗?

正如您所描述的,在这个配置中,大多数配置与您在没有Docker的情况下设置的配置完全相同。(这没什么错!)一定要:

  • 对于每个容器化服务,使用-p选项运行它,以在Docker空间外发布一些端口;例如,使用docker run -p 3306:3306 ... mysql:5.7运行的MySQL服务。

  • 要在服务之间进行连接,请连接到承载服务的虚拟机的IP地址和发布的端口号(-p选项后的第一个数字)。(像Consul这样的服务发现系统可以帮助记住哪个服务在哪个VM上。)

您不能将Docker Compose与此设置一起使用,除了它可能是记录每个单独服务的启动选项的一种更方便的方式之外。

如果使用Docker Compose或其他Docker本地工具对您来说很重要,那么您最多需要在一个VM上运行它。(如果你有一个Linux主机,你根本不需要虚拟机;MacOS和一些Windows设置都有桌面应用程序,可以很好地隐藏虚拟机。)由于Docker容器与虚拟机有一些相似之处(比如隔离的文件系统),更多面向开发人员的设置倾向于完全避免虚拟机,而且似乎不经常涉及Vagrant。你在这里描述的是一个非常好的部署架构,但它是你用Docker作为实现细节的Packer/Ansible堆栈设置的,而不是Docker优先的。

最新更新