docker 服务健康检查
services:
httpd:
image: php824:apache-mysqli
ports:
- 80:80
- 443:443
volumes:
- /path/to/httpd_conf/:/etc/apache2/
- /path/to/www:/var/www/html
- /etc/localtime:/etc/localtime:ro#同步主机和镜像的时间
depends_on:
mariadb:
condition: service_healthy
mariadb:
image: mariadb:10.7.8
volumes:
- /path/to/db_data/:/var/lib/mysql/
- /path/to/mariadb_conf/:/etc/mysql/
- /etc/localtime:/etc/localtime:ro
environment:
#这个环境变量只在初始化数据库的时候有用,在数据目录里有文件了之后这个环境变量就没用了,所以写什么都可以
MYSQL_ROOT_PASSWORD: 123456
healthcheck:
#这里的test有两种写法,写成列表形式,在日志里总是警告不知道为什么,但是写成字符串后就没问题了。而且列表形式要把每一项都用引号括起来,也就是["cmd","mysqladmin","ping","-h","localhost","-u","healthcheck"]
test: "mysqladmin ping -h localhost -u healthcheck"
interval: 8s
timeout: 5s
retries: 3
PS:所有的冒号后面要有一个空格,不然会检查出语法问题。