当前位置: 首页 > 知识库问答 >
问题:

是否可能在Docker-Compose中强制执行启动容器之间的延迟?[副本]

呼延震博
2023-03-14

我正在学习这篇docker教程,并遇到了docker编写的麻烦。问题是当我运行docker-compose up时,web容器无法连接到es容器,在几次失败的重试后,它放弃并死亡(然后web容器自行退出)。

然而,从日志来看,这似乎是因为es容器刚刚开始使用--如果我在此之后重复docker-compose up(一旦es已经启动并运行),web容器就可以正常工作。

所以我想知道,有没有一种方法可以从docker-compose.yml文件中指定启动容器之间的时间延迟?

web容器最初无法连接到es的终端输出如下:

C:\work\docker_learning\foodtrucks>docker-compose up Docker Compose现在在Docker CLI中,请尝试Docker Compose up

共有1个答案

全卜霸
2023-03-14

尝试将depends_on和health check添加到docker-compose文件

services:
    service_1:
       ...
       depends_on: 
          db:
             condition: service_healthy

    service_2:
       healthcheck:
          ...

它将强制执行容器启动命令

文档中的另一个示例

version: "2.4"
services:
  web:
    build: .
    depends_on:
      db:
        condition: service_healthy
      redis:
        condition: service_started
  redis:
    image: redis
  db:
    image: postgres
    healthcheck:
      test: "exit 0"
es:
  ...
  healthcheck:
    test: ["CMD-SHELL", "curl --silent --fail localhost:9200/_cluster/health || exit 1"]
    interval: 30s
    timeout: 30s
    retries: 3
 类似资料:
  • 问题内容: 在浏览器中,如果从调用的函数中使用,则将强制执行至少4ms的延迟。Mozilla的开发人员Wiki 描述了此行为,并提到该行为已在HTML5中标准化。 Node.js的文档未提及最小延迟。但是,该函数的文档将其描述为的更有效的替代方法。这表明它有更高的效率,因为它避免了这种延迟。否则可能会被优化以表现出相同的行为。 是否像网络浏览器一样,Node.js对setTimeout实施了最小延

  • 我有容器A和B,当我执行时,我希望它首先启动容器A,然后启动容器B。我指定了指令,但它似乎被忽略了(我看到它首先启动容器B)。 运行版本为3.4的YML文件,该文件有2个服务(A,B)。 谢谢你

  • 根据这个github问题,应该可以用Upstart、cron等和Docker0.6或更高版本启动一个完整的容器,但我该如何做呢? 我在期待 就像 我会得到一个登录屏幕,但它没有显示任何内容。我也尝试使用ssh访问它,但没有成功。我正在使用Docker索引中的默认ubuntu图像。

  • 我有一个服务,我正在通过Rancher通过Docker-Compose提出。我遇到的问题是需要在容器部署后设置密码。

  • 那么有没有办法从其他容器的服务状态启动容器??

  • 根据JavaEE 6教程: EJB容器负责确定何时初始化单例会话bean实例,除非单例会话bean实现类用javax注释。ejb。启动注释。在这种情况下,有时称为急切初始化,EJB容器必须在应用程序启动时初始化单例会话bean。在EJB容器向应用程序中的任何企业bean发送客户端请求之前,初始化单例会话bean。 Thorntail提供的RESTEasy应用程序不使用任何EJB,但它使用@Star