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