有一种聪明的方法可以从容器内部获取 docker-compose 文件的服务(或容器)列表。
我不想使用卷,或者将撰写文件静态传递到容器并解析它,或者传递包含来自环境变量的这些信息的列表。
docker-compose config --service
给出了一个完美的结果,
它返回 compose 的所有服务的列表,但我不知道如何将其从主机传递到我的容器。
(我想获取组成我的应用程序的所有容器的列表,以便我可以使用 registrator 和 consul 监控哪些容器的上升和下降)。
请按照指示操作:
brew install yq
。docker-compose config | yq '.services[]|key'
或 docker compose config | yq '.services[]|key'
。您将找到所有可用服务的列表。
如果您在
docker-compose
中跟随2个空格来定义服务,您可以通过以下命令获取服务列表
docker-compose config |grep -E '^ [a-zA-Z_-]+'