在我的Docker-Compose.yml中,我定义了Tomcat(包括.war-File)和MySQL-Server镜像。
当我使用docker-compose up时-MySQL服务器启动并正在导入SQL转储。 Tomcat也正在启动。
每次我运行docker-compose时,都会有其他SQL-Skripts(由于Jenkins-Build-Job从gitlab存储库中提取脚本)
但是我希望Tomcat等待所有SQL转储的导入开始。
有人知道该怎么做吗?
谢谢你的帮助。
最佳答案
如果您使用的是docker-compose版本2,则可以为mysql容器指定运行状况检查,然后在condition: service_healthy
部分中使用depends_on
。例如就像是
services:
db:
image: mysql:5.7
healthcheck:
test: mysql --protocol=socket -hlocalhost -uroot -p$$MYSQL_ROOT_PASSWORD -e 'SELECT 1'
tomcat:
image: tomcat
depends_on:
db:
condition: service_healthy
参见https://docs.docker.com/compose/compose-file/compose-file-v2/#depends_on
docker-compose 3不支持此功能,因此我们目前使用docker-compose 2可以避免此问题。
关于docker - Docker-Compose:Tomcat应该等待启动直到(My)SQL Dump准备就绪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48261626/