Docker编写healthcheck mysql

0lvr5msh  于 12个月前  发布在  Mysql
关注(0)|答案(2)|浏览(156)

我正在使用以下设置:1. Docker引擎:18.02.0-ce-rc1,2.编写1.18.0、3。麦克

mysql:
    image: mysql:5.6
    container_name: app-db
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: ${MYSQL_DATABASE}
      MYSQL_USER: ${MYSQL_USER}
      MYSQL_PASSWORD: ${MYSQL_PASSWORD}
    healthcheck:
      test: /usr/bin/mysql --host=127.0.0.1 --user=user --password=password --silent --execute \"SELECT 1;\"
      interval: 30s
      timeout: 10s
      retries: 5
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    networks:
      - app
    restart: always

但我总是得到以下错误相当快(在几秒钟内)

docker-compose up
Creating network "compose_app" with the default driver
Creating app-db ... done
Creating app-db ... 

ERROR: for app  Container "bf94292aa4fa" is unhealthy.
ERROR: Encountered errors while bringing up the project.

请帮帮我谢谢

sqyvllje

sqyvllje1#

mysql healthcheck应该如下所示:

healthcheck:
      test: mysql ${MYSQL_DATABASE} --user=${MYSQL_USER} --password='${MYSQL_PASSWORD}' --silent --execute "SELECT 1;"
      interval: 30s
      timeout: 10s
      retries: 5
q1qsirdb

q1qsirdb2#

有些时候在cmd shell中测试可以工作
在docker-compose.yml中配置这个对我来说很有效

environment:
    MYSQL_ROOT_USER: ${MYSQL_ROOT_USER}
    MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
restart: on-failure
healthcheck:
  test: ["CMD-SHELL", "mysql -h localhost -u root -p$$MYSQL_ROOT_PASSWORD" ]
  interval: 30s
  timeout: 20s
  retries: 10

我在.env文件夹中设置了${MYSQL_ROOT_PASSWORD}值。
执行运行状况检查的另一种方法是

healthcheck:
      test: ["CMD", "mysql -h ${MYSQL_HOST} -u  ${MYSQL_ROOT_USER} -p$$MYSQL_ROOT_PASSWORD" ]
      interval: 30s
      timeout: 20s
      retries: 10

相关问题