docker - Docker-compose 运行服务以防其他故障
问题描述
我想问一下是否可以在出现故障时运行一些备份服务。我的情况是:
我有两种通信方式(默认和关键),如果默认失败,我想从 docker-compose.yml 启动其他服务。
我想将这两种方法放在同一个 docker-compose.yml 文件中。
您对如何解决这种情况有任何想法吗?
提前致谢。
解决方案
对于给定的 docker-compose.yml 文件:
version: "3.7"
services:
default:
image: alpine
command: sleep 10 && exit 1
critical:
image: alpine
command: tail -f /dev/null
您可以通过一个长时间运行的进程来获得您想要的效果,该进程等待“默认”服务退出,然后在看到退出代码 1 时启动关键服务(您可以调整确切的逻辑以适应您的故障模式):
docker-compose up -d default
接着:
result=$(docker wait $(docker-compose ps -q default)); if [ $result -eq "1" ]; then docker-compose up -d critical; fi
docker wait 命令将阻塞,直到“默认”容器退出并打印退出代码,该代码进入 $result 变量。之后的逻辑检查“1”,然后启动“关键”服务。
推荐阅读
- python - 如何在`matplotlib.pyplot`中使用类别轴绘制水平线(`hlines`)?
- apache-tika - 为什么 Tika 2.1 应用程序会忽略 .txt 文件中的文本?
- javascript - useState 未正确更新数组
- javascript - 如何将数据从孩子传递给父母?
- r - 如何转置列并使其成为R中的标题
- excel - 更改 VBA 宏中的过滤列
- apache-beam - Beam DirectRunner Calcite 无法指定名称
- string - 如何在视图列表中搜索文本字符串?
- python - SQL Alchemy 引发了一个异常,它破坏了预期的代码流(当破坏主键唯一性时)
- visual-studio-code - VSCode Python Intellisense 无法正常工作