結論:
一般的都是使用 depends_on 來指定啟動順序,而且存在依賴服務容器不會等待ready狀態問題。
但是 在swarm 模式下,depends_on是無效的,可以采用wait-for-it.sh 腳本拖延啟動,如果還有其他方法,歡迎補充。
下面是官方資料,地址
depends_on
表達服務之間的依賴性。服務依賴項導致以下行為:
docker-compose up以依賴性順序啟動服務。在以下示例中,db和redis在之前啟動web。docker-compose up SERVICE自動包含SERVICE的依賴項。在下面的示例中,docker-compose up web還將創建並啟動db和redis。docker-compose stop按依賴關系順序停止服務。在以下示例中,web在db和之前停止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,會忽略該選項 。
