只有在上一个容器正在运行之后才启动容器

比方说,我有3个容器X,Y和Z.我希望容器Y只能在容器X运行之后启动,而容器Z只能在Y运行之后启动。

我该怎么做呢?

您可以使用depends_on docker-compose文件和depends_on选项来控制容器的启动顺序

以下是您的示例中docker-compose.yml的样子:

 version: '3' services: X: image: X_image Y: image: Y_image depends_on: X Z: image: Z_image depends_on: Y 

注意 :在启动Y之前, depends_on不会等待X“准备就绪” – 只有在它正在运行之前。 如果您需要等待服务准备就绪,请参阅控制启动顺序以获取有关此问题的更多信息以及解决此问题的策略。

你应该考虑重新devise你的应用程序部分,如果他们有这么严重的依赖关系,那么他们可能不应该分裂到不同的容器,或者你应该使用一些decoupeling来避免

你可以做的是:

  1. 有一个或多个init容器
  2. 在每个阻塞的容器中都有一个入口点脚本 ,直到满足依赖关系
  3. 在集群之外实施控制启动哪个吊舱的东西。
  4. 写一个自定义控制器