docker - Docker-Compose:Tomcat应该等待启动直到(My)SQL Dump准备就绪

标签 docker docker-compose

在我的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/

相关文章:

docker - 如何在docker compose中创建docker卷

docker - 从任何地方使用在 Oracle 云上运行的 Wallabag 实例

node.js - 如何将 docker 环境变量传递给 npm 脚本?

node.js - docker compose = ECONNREFUSED 中的 NodeJS Mongodb

deployment - Docker 容器上的分布式系统 NSQ 拓扑模式

docker - 无法从不同机器(在同一网络中)访问docker selenium hub [docker selenium网格不起作用]

Docker 容器时区保持为 UTC

django - Django 在带有 nginx 的 docker 上未使用静态文件

python - 使用 docker 入口点和 docker 外部的文件

docker-compose 在初始启动时命名卷复制内容