docker-compose 啓動依賴 wait-for-it.sh 實例

說明

本文介紹了 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/

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章