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

本文提供了一个实例,展示了如何使用docker-compose和wait-for-it.sh解决Tomcat依赖MySQL启动的问题。首先解释了Dockerfile的CMD命令和docker-compose的command命令的作用,然后介绍了wait-for-it.sh脚本的用途,它通过检查服务端口是否开放来判断依赖服务是否启动。在Dockerfile中将wait-for-it.sh复制到Tomcat镜像中,利用command覆盖默认启动命令,确保MySQL启动后Tomcat再运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

说明

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

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zonson9999

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值