2017-02-25 65 views
3

可以說我有3個容器X,Y和Z.我希望容器Y僅在容器X運行後啓動,並且容器Z僅在Y運行後啓動。只有在上一個容器正在運行後才啓動容器

我該怎麼做?

+0

你似乎是新的StackOverflow的 - 問什麼之前,好的建議是看看到[如何提問](http://stackoverflow.com/help/how-to-ask)指南。 – pagid

+0

嗨,你有沒有找到一個適合你的解決方案? – pagid

回答

2

您可以使用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 

備註depends_on不會等待fo在Y開始之前,X必須「準備就緒」 - 直到它運行。如果您需要等待服務準備就緒,請參閱Controlling startup order瞭解有關此問題的更多信息以及解決此問題的策略。

2

你應該考慮重新設計應用程序的部分,如果他們有這樣沉重的依賴,那麼他們也許應該不能被分割到不同的容器或者你應該使用一些decoupeling避免

你可以做的是:

  1. 有一個或多個init containers
  2. 是否在每個容器的entrypoint script其阻斷,直到依賴已經解決
  3. 實現外噸的東西他控制哪個吊艙啓動。
  4. custom controller
+0

很好的建議。帶有睡眠的入口點腳本是一種可行的解決方案。理想情況下,容器Z中的應用程序會嘗試以合理的間隔重新連接到容器Y,直到找到它。這將使整個基礎設施更加健壯。 – mkasberg

相關問題