docker-compose 启动依赖 wait-for-it.sh 实例

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wuzhong8809/article/details/82500722

说明

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

猜你喜欢

转载自blog.csdn.net/wuzhong8809/article/details/82500722