docker swarm 模式服務之間啟動順序問題


結論:

一般的都是使用 depends_on 來指定啟動順序,而且存在依賴服務容器不會等待ready狀態問題。

但是 在swarm 模式下,depends_on是無效的,可以采用wait-for-it.sh 腳本拖延啟動,如果還有其他方法,歡迎補充。

 

下面是官方資料,地址

depends_on

表達服務之間的依賴性。服務依賴項導致以下行為:

  • docker-compose up以依賴性順序啟動服務。在以下示例中,dbredis在之前啟動web
  • docker-compose up SERVICE自動包含SERVICE的依賴項。在下面的示例中,docker-compose up web還將創建並啟動dbredis
  • docker-compose stop按依賴關系順序停止服務。在以下示例中,webdb之前停止redis

簡單的例子:

version: "3.9"
services:
  web:
    build: .
    depends_on:
      - db
      - redis
  redis:
    image: redis
  db:
    image: postgres

使用時需要注意以下幾點depends_on

  • depends_on 不會在啟動 web 之前等待db和redis變成 “ready” 狀態如果您需要等待服務准備就緒,請參閱控制啟動順序以 獲取有關此問題的更多信息以及解決該問題的策略。
  • deploying a stack in swarm模式下,3版本的Compose文件中 含有 depends_on,會忽略選項 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM