【问题标题】:Docker compose wait for spring boot app is up [duplicate]Docker compose等待春季启动应用程序启动[重复]
【发布时间】:2020-04-16 07:01:08
【问题描述】:

我在 3.3 版中使用 docker-compose,我想等待带有 spring 应用程序的容器启动,然后应该启动其他带有 spring boot 应用程序的容器。我试过健康检查,但它不起作用。这是我的 docker-compose 的样子:

version: '3.3'
services:
  eureka:
    build: ./eureka
    ports:
      - 8761:8761
    networks:
      - spring-cloud-network
    environment:
      - SPRING_ZIPKIN_BASEURL=http://zipkin:9411
    depends_on:
      - zipkin
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8761"]
      interval: 10s
      timeout: 10s
      retries: 5
  zipkin:
    build: ./zipkin
    ports:
      - 9411:9411
    networks:
      - spring-cloud-network
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9411"]
      interval: 10s
      timeout: 10s
      retries: 5

有没有可能实现我想要的?

【问题讨论】:

  • 您可以创建一个 bash(例如)脚本,以循环检查其他容器的就绪检查端点(例如),并仅在其他容器启动时启动 jar。然后你使用这个脚本作为你的 spring-boot 应用镜像的入口点。
  • @michalk 感谢您的回答,那么如何将 zipkin 容器的链接传递到 eureka 入口点 sh 脚本中?
  • 例如,您可以使用环境变量。启动容器时,该脚本将从环境中选择值。

标签: spring spring-boot docker docker-compose


【解决方案1】:

根据官方文档 (https://docs.docker.com/compose/startup-order/),这似乎是不可能的,他们也解释了为什么会这样,同时还提供了一些解决方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-15
    • 2018-05-20
    • 2020-04-23
    • 1970-01-01
    • 2019-04-13
    • 1970-01-01
    • 2015-11-11
    • 2018-09-04
    相关资源
    最近更新 更多