Docker撰写 – 在应用程序之前构build订单,数据库

我使用docker撰写文件来构build一个web应用程序。 在一个图像我有Web服务器,PHP和其他所需的扩展和包。 Docker文件的Web应用程序是inheritance公共基础的形象,并扩展它与自定义命令。 在另一个容器中,我有MySQL服务器。 现在我面临的问题,在最初的构build过程中,我的应用程序实际上需要实时数据库连接,但Web容器总是先执行,而数据库仍然没有启动,这当然会导致失败。 我试图添加depends_on,但正如我所见,这只影响开始顺序,而不是构build之一。

我听说摇杆和其他扩展解决这个问题,但有没有办法做到这一点原生? 就我所能研究而言,我发现没有任何可行的select,因为人们要求很多。

在docker文件之后,depends_on在启动web之前不会等待db“准备就绪”。 如果您需要等待服务准备就绪,请按照此处的文档https://docs.docker.com/compose/startup-order/

我不确定它是否适合您,但您可以构build自定义脚本。

假设您将有两个docker合成文件。

  • 一个用于构build你的mysql数据库
  • 第二个为您的webapps

首先你可以用两个mysql镜像午餐mysql数据库docker-compose文件

  • 一会午餐你的数据库
  • 第二个将启动一个脚本,直到MySQL数据库准备就绪。

两个容器启动完成后,你可以开始启动docker-compose和你的web应用程序,你将确保数据库启动并运行

这种方法需要一些自定义脚本来处理,但可以是非常有用的。