我正在尝试在容器中使用Docker HEALTHCHECK。我在版本3 docker-compose文件中进行设置,该文件也支持healthcheck:
def gotValueEx(idsToFetch: Seq[Int]): Observable[(Int, Option[String])] = {
Observable.from(idsToFetch).flatMap((id: Int) => fetchFromDb(id).map(doc => (id, Option(doc))).orElse((id, None)))
}
println(gotValueEx(Seq(1, 2, 3, 4, 5, 6)).toBlocking.toList)
在我能找到的每个地方,包括stackoverflow,检查容器运行状况的方法是使用version: '3'
services:
api:
[...]
healthcheck:
test: test ! -e /unhealthy
interval: 10s
timeout: 1s
retries: 1
并查看docker inspect
,但不存在这样的条目:
State.Health
我用Google搜索了很长一段时间,但无法查看此信息的移动位置或检查健康状况的其他方法。
版本信息:
$ docker inspect --format='{{json .State}}' api
Template parsing error: template: :1:7: executing "" at <.State>: map has no entry for key "State"
答案 0 :(得分:3)
服务名称api
是一个撰写构造。 Docker无法将名称api
映射到容器。我怀疑你有另一个名为api
的对象docker inspect
正在查找它。
撰写容器通常名为{{parent_directory}}_{{service}}_{{n}}
。要找到名称,请使用:
docker-compose ps
docker ps -a --filter name=SERVICE_NAME
然后你可以对该名称使用检查
docker inspect --format='{{json .State}}' CONTAINER_ID_OR_NAME
或专门检查容器以避免非容器对象:
docker container inspect --format='{{json .State}}' CONTAINER_ID_OR_NAME
所有容器都应包含.State
对象。只有定义了运行状况检查的容器才会有.State.Health
数据。
答案 1 :(得分:0)
除了@Matt的回答,让我超越了no State
条目问题,我还需要删除所有现有容器并重建它们。我不确定原因,但我现在可以看到.State.Health
。