docker 配置一个服务在另一个服务启动后再启动,depends_on 服务间依赖编排

望舒的头像
望舒 最后修改于
标签:
dockerdepends_ondocker-composedocker 配置

docker 配置一个服务在另一个服务启动后再启动,服务 A 启动后再启动服务 B,比如某些应用依赖 nacos 注册中心服务,应用服务依赖 gateway 网关服务,某些 RPC 场景依赖另一个服务启动

省流,通过 depends_on 配置来解决服务间依赖问题。实际开发中,nacos、redis、RPC、数据库等都会进行一定的重试或等待,但仍存在很多硬性依赖场景

以下配置文件表达:

gateway、service-A、service-B、service-C 全部依赖 redis 和 nacos 服务

service-A、service-B、service-C 依赖 gatewaty 网关服务

service-B 依赖 service-A 服务

service-B 服务最后启动

配置文件

复制

services:
  redis:
    container_name: redis
    image: redis:7.2.4
    restart: unless-stopped
    ports:
      - "6379:6379"
    networks:
      - test
  nacos:
    container_name: nacos
    image: nacos/nacos-server:v2.3.2
    restart: unless-stopped
    environment:
      - TZ=Asia/Shanghai
      - MODE=standalone
    ports:
      - "8848:8848"
      - "9848:9848"
      - "9849:9849"
    networks:
      - test
  gateway:
    container_name: gateway
    build:
      context: ./app-gateway
      dockerfile: Dockerfile
    restart: unless-stopped
    depends_on:
      - redis
      - nacos
    environment:
      - TZ=Asia/Shanghai
    networks:
      - test
  service-A:
    container_name: service-A
    build:
      context: ./service-A
      dockerfile: Dockerfile
    restart: unless-stopped
    depends_on:
      - redis
      - nacos
      - gateway
    environment:
      - TZ=Asia/Shanghai
    networks:
      - test
  service-B:
    container_name: service-B
    build:
      context: ./service-B
      dockerfile: Dockerfile
    restart: unless-stopped
    depends_on:
      - redis
      - nacos
      - gateway
      - service-A
    environment:
      - TZ=Asia/Shanghai
    networks:
      - test
  service-C:
    container_name: service-C
    build:
      context: ./service-C
      dockerfile: Dockerfile
    restart: unless-stopped
    depends_on:
      - redis
      - nacos
      - gateway
    environment:
      - TZ=Asia/Shanghai
    networks:
      - test
networks:
  test:

服务启动顺序(自左往右)

gantt title 服务启动顺序(自左往右) dateFormat YYYY-MM-DD HH:mm:ss section 基础设施 Redis :a1, 2025-04-10 00:00:00, 1m Nacos :a2, 2025-04-10 00:00:00, 1m section 服务启动 Gateway :b1, 2025-04-10 00:01:00, 1m Service-A :b2, after b1, 1m Service-C :b3, after b1, 1m Service-B :b4, after b2, 1m

服务依赖关系(自上而下)

graph TD redis[Redis] nacos[Nacos] gateway[Gateway] serviceA[Service-A] serviceB[Service-B] serviceC[Service-C] redis --> gateway redis --> serviceA redis --> serviceB redis --> serviceC nacos --> gateway nacos --> serviceA nacos --> serviceB nacos --> serviceC gateway --> serviceA gateway --> serviceB gateway --> serviceC serviceA --> serviceB
‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​​‌​‌​‌​​​​​‌​‌‌‌‌​‌​‌‌​‌​​‌​‌‌​‌​​​‌​​​​‌‌​‌​‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌‌​‌​‌​​​‌‌‌​​​‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌​​‌​​‌​‌‌‌‌​‌‌‌​‌‌​‌‌​‌​‌‌​​​​​​​‌​​​‌​​​​‌‌​‌​‌‌​‌‌‌​​‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌​​‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌‌​‌‌‌​‌‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌​​‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌​‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌​‌‌‌​‌‌‌​‌‌‌‌​​‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌​‌‌‌​‌‌‌‌‌‌‌​‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​​‌‌‌​​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌‌​‌​‌​​​‌‌‌​​​‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌‌‌‌‌‌‌​‌‌‌​​‌‌‌​​‌‌‌‌‌​‌‌‌​​‌‌‌‌​‌​‌‌‌​‌‌‌​‌‌‌‌‌​‌​‌‌‌‌‌‌‌​​‌‌‌‌​‌​‌‌‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌‌‌‌‌​‌‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌‌​​​​​​‌‌​​​​‌‌‌‌​​​​‌​‌‌​​​​​‌‌‌​‌‌​​​​‌​​‌‌‌​​‌‌‌‌‌​​​​‌‌​​​​‌‌​​‌​‌​‌​​​​​​​​​​‌‌​‌​​​‌​‌​​​‌‌‌‌‌​​‌​​‌‌​​​​​​​​‌‌​‌​‌​​‌‌‌​​​​‌‌‌‌​‌‌‌‌‌​‌​​​‌‌‌‌​‌‌​​​​​‌​‌​‌​​​​​​​​​​​‌​‌​‌‌‌​​​‌​​‌‌‌‌​‌​​‌​‌​​‌​‌​​​​‌​‌​​‌​‌​‌​​​​​‌​‌‌‌‌​‌​‌‌​‌​​‌​‌‌​‌​‌‌‌​‌​‌‌​​​​​​‌​‌‌‌​‌​‌‌‌‌​​‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌‌‌‌​‌‌‌‌‌‌‌‌‌​​‌​‌‌‌‌‌‌‌
0
0
0
79
No data