小编aTT*_*raX的帖子

作曲家文件中的Docker healthcheck

我尝试将新的健康检查集成到我的docker系统中,但我真的不知道如何以正确的方式做到这一点:/

问题是,我的数据库容器需要更多时间来启动和初始化数据库,然后启动我的主应用程序的容器.结果:主容器无法启动正确,导致数据库连接丢失.我编写了一个healthcheck.sh脚本来检查数据库容器的连接,因此主容器在连接可用后开始启动.但我不知道如何在Dockerfile和docker-compose.yml中正确集成它

healthcheck.sh就像:

#!bin/bash
COUNTER=0
while [[ $COUNTER = 0 ]]; do
  mysql --host=HOST --user="user" --password="password" --database="databasename" --execute="SELECT 1";
  if [[ $? == 1 ]]; then
    sleep 1
    echo "Let's sleep again"
  else
    COUNTER=1
    echo "OK, lets go!"
  fi
done
Run Code Online (Sandbox Code Playgroud)

mysql容器Dockerfile:

FROM repository/mysql-5.6:latest
MAINTAINER Me

... some copies, chmod and so on 

VOLUME ["/..."]

EXPOSE 3306

CMD [".../run.sh"]

HEALTHCHECK --interval=1s --timeout=3s CMD ./healthcheck.sh
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml喜欢:

version: '2'
services:
  db:
    image: db image
    restart: always
    dns:
      - 10.
    ports:
      - "${MYSQL_EXTERNAL_PORT}:${MYSQL_INTERNAL_PORT}"
    environment: …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile docker-compose

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

docker ×1

docker-compose ×1

dockerfile ×1