我使用docker compose文件构建了一个Web应用程序。在一个图像中,我有webserver,php和其他必需的扩展和包。 Web应用程序的Docker文件继承公共基础映像并使用自定义命令扩展它。在另一个容器中我有mysql服务器。现在我面临的问题是,在初始构建期间,我的应用程序实际上需要实时数据库连接,但Web容器始终首先执行,而数据库1仍未启动,这当然会导致失败。我试图添加depends_on但是我认为这只影响开始顺序,而不是构建顺序。
我听说摇滚乐和其他扩展解决了这个问题,但有没有办法本地做到这一点?据我所知,我发现没有可行的选择,因为人们要求它很多没有意义。
答案 0 :(得分:2)
我不确定它是否适合您,但您可以构建自定义脚本。
让我们说你有两个泊坞文撰写文件。
首先你可以用两个mysql图像午餐mysql数据库docker-compose文件
在两个容器完成启动后,您可以开始使用您的webapps启动docker-compose,您将确保数据库已启动并正在运行。
这种方法需要一些自定义脚本来处理,但可能非常有用。
答案 1 :(得分:2)
在docker文件之后,depends_on将不会等待db在启动web之前“准备好”。如果您需要等待服务准备就绪,请按照此处的文档操作 https://docs.docker.com/compose/startup-order/