如何在Docker Stack(Swarm)中依次加载服务

我有一个Docker Stack的YML文件,它有大约20个不同的服务。 有configuration服务器,API网关和许多微服务(SPRING体系结构)等依赖项。

(我的YML文件的一部分)

version: "3" services: config-service: image: 192.168.0.1:5000/config-service:1.0.7 ports: - "8888:8888" networks: - my-gateway-network environment: - CONFIG_SERVICE_SECURITY_BASIC_ENABLED=false - - JAVA_OPTS=-Xmx256m -Xms256m deploy: mode: replicated replicas: 1 healthcheck: test: curl -s http://localhost:8888 interval: 15s retries: 20 oauth-service: image: 192.168.0.1:5000/oauth-service:1.0.0 ports: - "1116:8080" networks: - my-gateway-network environment: - JAVA_OPTS=-Xmx128m -Xms128m - CONFIG_SERVICE_URL=config-service:8888 volumes: - /opt/authkeys:/opt/authkeys deploy: mode: replicated replicas: 3 healthcheck: test: curl -s http://localhost:1116 interval: 15s retries: 20 

在我做的那一刻

 docker stack deploy -c <file.yml> myStack 

它将立即启动所有服务,而不检查任何依赖关系。 从一开始他们就立刻把虚拟机占用了几分钟的时间,这根本不是健康的。

有一种方法可以通过一次加载一次服务,以特定顺序执行,并在触发内联下一个服务之前,通过执行健康检查(端点上的简单CURL)来检查容器是否成功启动确保弹簧组件工作正常。