如何解决Docker-compose:超时启动另一个容器
是否可以从myapp-1
开始myapp-2
,然后睡眠30秒钟,然后才开始myapp-3
?
对此docker-compose.yml
进行了尝试,没有运气。
version: '3'
services:
myapp-1:
container_name: myapp-1
image: myapp:latest
restart: always
myapp-2:
container_name: myapp-2
image: myapp:latest
restart: always
test-sleep:
image: busybox
command: ["/bin/sleep","30"]
depends_on:
- "myapp-1"
- "myapp-2"
myapp-3:
container_name: myapp-3
image: myapp:latest
restart: always
depends_on:
- "test-sleep"
解决方法
您建议的docker-compose.yml
无法解决您的用例,因为depends_on
属性不等待依赖关系准备就绪(或终止),而只是等待依赖关系启动(即,在您的示例中,myapp-3
命令一旦启动)就启动。{p>
例如参见相应的doc:
/bin/sleep 30
在启动[服务]之前不等待[依赖项]处于“就绪”状态-仅在它们启动之前。如果您需要等待服务准备就绪,请参阅Controlling startup order,以获取有关此问题的更多信息以及解决方案。
上面的链接提到了一些工具(包括wait-for-it),可用于等待某些服务依赖项准备就绪(前提是它们在给定的TCP端口处公开Web服务)。
否则,如果您只想等待30秒再开始depends_on
,并假设myapp-3
的{{1}}包含Dockerfile
,则可以摆脱{{1 }},然后编写类似的内容:
myapp-3
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。