【发布时间】: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