docker - Docker撰写:可以对依赖服务的延迟启动进行建模吗?

我最初将此问题发布在Docker forums上,但没有得到任何答复。

我想知道对一组服务建模的最佳方法是什么,我们将它们称为dbwebbatchdb只是一个正在运行的数据库服务器实例(认为是MySQL)。 web是需要连接到数据库的Web应用程序。 batch是一个批处理应用程序,需要连接到同一数据库(它可以/将与web并行运行)。 db需要运行,才能运行webbatch。但是webbatch可以彼此独立运行(一个或两个可以同时运行)。如果两者都同时运行,则它们需要与同一个数据库实例通信(因此db实际上是在使用volumes_from一个单独的数据卷容器)。因此,如果用例更简单(想想总是一起运行的dbweb),那么它们都将被简单地定义为同一撰写文件中的服务,并且web链接到db

据我了解,它们不能全部在同一个Docker compose配置中定义。相反,我需要三种不同的配置。一个用于db,它首先启动,一个用于web(使用external_links查找db),另一个用于batch(也使用external_links查找db)。那是正确的,还是我没有考虑某些可用的机制?假设需要多配置设置,那么当dbweb组合启动时,是否有一种方法可以“懒惰”地初始化batch组合(如果未运行)?

最佳答案

如果web在docker-compose文件中具有指向db的链接,则db将始终首先开始。

据我所知,Docker永远不会知道何时启动数据库。 web容器的责任是正确启动并重试,直到基础启动(超时)。

对于batch服务,假设您不想每次启动webdb容器(使用docker-compose uprun)时都启动它,则可以尝试扩展服务。有关更多信息,请参见docs。

https://stackoverflow.com/questions/31975600/

相关文章:

hadoop - 检索使用hadoop distcp复制的数据的大小

logging - 如何在Postfix(3)中更改(syslog)日志目标以用于Docker

apache-spark - 找不到pyspark.zip,应用程序application_1558

hadoop - 如何修复用于计算一列并按另一列分组的配置单元代码?

hadoop - hbase completebulkload长时间运行

docker - 尝试推送到注册表时的HTTP响应403

hadoop - 向我现有的集群添加自动故障转移?

hadoop - 实现Hivemall回归功能的问题

amazon-web-services - Amazon EB中的Dockerfile

java - 使用docker文件在Oracle初始化期间初始化架构