运维开发网

Docker-compose检查mysql连接是否准备就绪

运维开发网 https://www.qedev.com 2020-07-15 13:22 出处:网络 作者:运维开发网整理
我试图确保我的应用程序容器在db容器启动和READY TO接受连接之前不运行迁移/启动. 所以我决定使用healthcheck并依赖于docker compose file v2中的选项. 在应用程序中,我有以下内容 app: ... depends_on: db: condition: service_healthy 另一方面,db具有以下健康检查 db:
我试图确保我的应用程序容器在db容器启动和READY TO接受连接之前不运行迁移/启动.

所以我决定使用healthcheck并依赖于docker compose file v2中的选项.

在应用程序中,我有以下内容

app:
    ...
    depends_on:
      db:
      condition: service_healthy

另一方面,db具有以下健康检查

db:
  ...
  healthcheck:
    test: TEST_GOES_HERE
    timeout: 20s
    retries: 10

我尝试了几种方法,如:

>确保创建db DIR

test:[“CMD”,“test -f var / lib / mysql / db”]

>获取mysql版本:

test:[“CMD”,“echo’SELECT version();’| mysql”]

> Ping管理员(将数据库容器标记为正常但似乎不是有效测试)

测试:[“CMD”,“mysqladmin”,“ping”,“ – h”,“localhost”]

有人有解决方案吗?

version: "2.1"
services:
    api:
        build: .
        container_name: api
        ports:
            - "8080:8080"
        depends_on:
            db:
                condition: service_healthy
    db:
        container_name: db
        image: mysql
        ports:
            - "3306"
        environment:
            MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
            MYSQL_USER: "user"
            MYSQL_PASSWORD: "password"
            MYSQL_DATABASE: "database"
        healthcheck:
            test: ["CMD", "mysqladmin" ,"ping", "-h", "localhost"]
            timeout: 20s
            retries: 10

在db容器运行正常之前,api容器才会启动(基本上直到mysqladmin启动并接受连接.)

0

精彩评论

暂无评论...
验证码 换一张
取 消