Docker compose 服务依赖关系及健康检查

602 阅读1分钟

Docker compose 服务依赖关系 depends_on 健康检查 healthcheck

这是一个Mysql和业务系统的示例,其中业务系统 app 依赖 mysql

version: "3.1"
services:
  mysql:
    hostname: mysql
    restart: always
    container_name: mysql
    image: mysql:5.7
    healthcheck:
      test: ["CMD","mysql","-uroot","-pnetilermanager","-e","SELECT 1","mysql"]
      interval: 5s
      timeout: 10s
      retries: 3
      start_period: 30s
    environment:
      - MYSQL_ROOT_PASSWORD=password
    ports:
      - "3306:3306"
  app:
    hostname: app
    restart: always
    container_name: app
    image: hczy-openjdk8-alpine:v14
    depends_on:
      mysql:
        condition: service_healthy
    volumes:
      # 主程序
      - /opt/server/volumes/app-cis-all/target/app-cis-all-1.0.2.jar:/app.jar
      # 工程包
      - /opt/server/volumes/app-cis-all/target/libs:/libs
    entrypoint:
      - "java"
      - "-jar"
      - "app.jar"
      - "-Djava.security.egd=file:/dev/./urandom"

服务依赖 depends_on

depends_on 声明服务依赖,可添加多个 condition 为条件 service_healthy 为健康检查通过后启动服务

健康检查 healthcheck

healthcheck 是健康检查的片段,当依赖的服务,启动失败或者错误时,后续的服务哪怕成功启动,业务无法运行的。这时就需要健康检查! 健康检查是容器运行状态的高级检查,主要是检查容器所运行的进程是否能正常的对外提供“服务”,比如一个数据库容器,我们不光需要这个容器是up的状态,我们还要求这个容器的数据库进程能够正常对外提供服务,这就是所谓的健康检查。