wait-for-it.sh腳本控制docker-compose啟動順序詳解


原文:https://blog.csdn.net/wuzhong8809/article/details/82500722?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase

 

說明
本文介紹了 tomcat 依賴於 mysql 的啟動的一個例子

使用 docker-compose + wait-for-it.sh

基礎知識
Dockerfile CMD 命令的作用
先看個例子:

=== Dockerfile ==============

FROM ubuntu:16.04

CMD ["echo", "hello my ubuntu"]

==========================

以上面這個Dockfile 為例

創建它

>docker build -t myubt .

 

docker run 不帶參數

>docker run myubt

hello my ubuntu

 

執行 CMD ["echo", "hello my ubuntu"]

 

docker run 帶參數

>docker run myubt echo haha

haha

CMD ["echo", "hello my ubuntu"] 沒有執行,執行的是 echo haha

 

docker-compose command 命令的作用
command 用於覆蓋容器啟動后默認執行的命令

看下面這個例子:

把下面這個文件和剛才的Dockfile放到一個目錄

==== docker-compose.yml =====

version: '3'

services:

web:

build: .

command: ["echo", "hiahia"]

===========================

運行

>docker-compose up

看到 hiahia 被輸出

 

wait-for-it.sh
下載地址:https://github.com/vishnubob/wait-for-it

使用方式:

>wait-for-it.sh www.baidu.com:80 -- echo baiduok

說明:

通過端口是否處於監聽連接的狀態來判斷服務是否已啟動,如果服務啟動了,就執行 -- 之后的指令。

 

比如下文例子中將要判斷mysql 是否已啟動,如果啟動就執行 catalina.sh run

>wait-for-it.sh host_name : 3306 -- catalina.sh run

 

下面介紹使用 command 指令 + wait-for-it 腳本 來做 啟動依賴

啟動依賴
最后一點就是需要用把 wait-for-it.sh打包到鏡像中

====Dockerfile========================

FROM tomcat:latest

COPY ./wait-for-it.sh /usr/local/tomcat/bin/

===================================

完整代碼見:

https://github.com/zeson99/docker_demos/tree/master/depend_on_demo

 

測試:

>docker-compose up

參考
https://docs.docker.com/compose/startup-order/
————————————————
版權聲明:本文為CSDN博主「Zonson9999」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wuzhong8809/article/details/82500722


免責聲明!

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



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