首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头工人-通过健康检查,仍不健康

码头工人-通过健康检查,仍不健康
EN

Stack Overflow用户
提问于 2022-04-06 07:32:53
回答 2查看 3.2K关注 0票数 0

condition在3.0-3.8版本中被删除了撰写规范,但现在又回来了!使用撰写规范v3.9的版本,您可以将condition作为中的一个选项。

我使用docker组合启动MySQL和JavaWeb项目,JavaWeb的启动需要依赖MySQL来创建完整的数据,所以我使用了健康检查

但是mysql的healthcheck有一个问题,这是我的docker-compose

代码语言:javascript
复制
# docker-compose.yml
version: "3.9"  

services:

  mysql:
    build:
      context: ./mysql
    command: [
        'mysqld',
        '--character-set-server=utf8mb4',
        '--collation-server=utf8mb4_unicode_ci',
        '--default-time-zone=+8:00',
        '--lower-case-table-names=1'
    ]
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: fuba-db
      MYSQL_ROOT_PASSWORD: fb123456
    healthcheck:
      test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD  -e 'SELECT * FROM factor_header' fuba-db "
      interval: 1s
      timeout: 3s
      retries: 3

  redis:
    build:
      ......

  nginx:
    build:
      ......

  fubaquant:
    build:
      context: ./webapps
    ports:
      - "8080:8080"
    volumes:
      - /mnt/java/jar:/home/ruoyi  #jar包
    depends_on:
      mysql:
        condition: service_healthy
      redis:
        condition: service_started

错误的陈述是:

代码语言:javascript
复制
test: "mysql -uroot -p$$MYSQL_ROOT_PASSWORD  -e 'SELECT * FROM factor_header' fuba-db "

控制台输出:

代码语言:javascript
复制
pro-mysql-1      | 2022-04-07T08:16:54.203710Z 1 [Warning] root@localhost is created with an empty password ! Please consider switching off the --initialize-insecure option.
container for service "mysql" is unhealthy

由于fubaquant depends_on mysql健康检查,fubaquant也没有启动。

mysql容器的健康检查日志是:

我检查了mysql的健康检查日志,它也是健康的

谢谢你的帮助

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-04-07 06:23:28

我将健康检查配置为只允许3次重试,每隔1秒一次。当compose正在启动java时,mysql服务还没有在3s延迟内达到健康状态,所以compose停止并报告此错误。这是我增加重试次数之后的工作

票数 0
EN

Stack Overflow用户

发布于 2022-04-06 09:24:18

看起来您正在尝试使用错误的用户和密码运行健康检查。你有

代码语言:javascript
复制
healthcheck:
      test: ["CMD", "mysqladmin", "-u$mysql", "-p$123456",  "ping", "-h", "localhost"]

$mysql$123456将尝试解析这些变量的值。您想要的是使用以下选项。

代码语言:javascript
复制
healthcheck:
      test: ["CMD", "mysqladmin", "-u$MYSQL_USER", "-p$MYSQL_PASSWORD",  "ping", "-h", "localhost"]

然后尝试使用用户mysaqladmin和密码123456运行mysql (这两种方法都被定义为mysql服务的123456)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71762725

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档