gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 12:34:55 25 4
gpt4 key购买 nike

我正在尝试确保我的应用容器在 db 容器启动并准备好接受连接之前不会运行迁移/启动。

所以我决定使用运行状况检查并依赖于 docker compose file v2 中的选项。

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

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

另一方面,数据库具有以下运行状况检查

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

我尝试了几种方法,例如:

  1. 确保已创建 db DIR
    测试:[“CMD”,“test -f var/lib/mysql/db”]
  2. 获取mysql版本:
    测试:["CMD", "echo 'SELECT version();'| mysql"]
  3. Ping 管理员(将 db 容器标记为健康但似乎不是有效的测试)
    测试:[“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 启动并接受连接。)

关于mysql - Docker-compose 检查 mysql 连接是否准备好,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42567475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com