php - 如何在 docker 上运行 3 层应用程序,使用 vagrant 在 3 个不同的 centos 上运行,

标签 php mysql docker vagrant

我正在研究 Vagrant,并尝试创建 3 层 Web 应用程序,我使用相同的 vagrant 文件在 Vagrant 上安装了 3 个 Centos。

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

这三个都是同步的并且工作正常,但是当我为第一个 MYSQL 数据库创建 docker 容器时,我能够在同一虚拟机上本地连接它,但无法通过第二个虚拟机与 apache 和 PHP 连接。

谁能帮帮我?

我还必须在 Docker compose 上测试这个 3 层网络应用程序。

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

最佳答案

在您所描述的配置中,大部分配置与您在没有 Docker 的情况下设置的配置相同。 (这没有任何问题!)确保:

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

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

您不能在此设置中使用 Docker Compose,除了它可能是记录每个单独服务的启动选项的更方便的方式。

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

关于php - 如何在 docker 上运行 3 层应用程序,使用 vagrant 在 3 个不同的 centos 上运行,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54276099/

相关文章:

php - 在 PHP 中将大量数据作为脚本例程导入时,XML 是最好的数据交换格式吗?

php - 使用 ffmpeg 和 php 执行帧转换

PHP 博客条目未提交到 MySQL 数据库

php - 由于某人输入数据的方式很奇怪,无法生成准确的结果 (1 12 13)

node.js - Express js npm 安装失败原因 : getaddrinfo EAI_AGAIN

php - 将Symfony2应用程序连接到Docker中的数据库容器时出现问题

php - 单个查询,其中查询中的乘法并获取该乘法的总和

php - 如何在CodeIgniter框架中将图像上传到文件夹并插入到数据库

php - 为什么我的 INSERT IGNORE 代码不工作?

ubuntu - Docker:启动容器时出错:无法加载 AUFS 模块