小编dja*_*son的帖子

尝试对 docker 检查 State.Health 给出`map has no entry for key "State"`

我正在尝试在容器中使用 Docker HEALTHCHECK。我在版本 3 docker-compose 文件中进行设置,该文件也支持healthcheck

version: '3'

services:
  api:
  [...]
    healthcheck:
      test: test ! -e /unhealthy
      interval: 10s
      timeout: 1s
      retries: 1
Run Code Online (Sandbox Code Playgroud)

在我能找到的每个地方,包括在 stackoverflow 上,检查容器健康状况的方法是使用docker inspect并查看State.Health,但不存在这样的条目:

$ docker inspect --format='{{json .State}}' api
Template parsing error: template: :1:7: executing "" at <.State>: map has no entry for key "State"
Run Code Online (Sandbox Code Playgroud)

我用谷歌搜索了很长一段时间,但看不到这些信息移动到哪里或任何其他检查健康状态的方法。

版本信息:

$ docker-compose --version
docker-compose version 1.16.1, build 6d1ac219
$ docker --version
Docker version 17.09.0-ce, build afdb6d4
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

5
推荐指数
1
解决办法
6006
查看次数

Spring WebFlux Webclient 接收应用程序/八位字节流文件作为 Mono

我正在 Kotlin 中制作一个小型 Spring WebFlux 应用程序的原型。此应用程序需要从远程 REST 端点获取 tar 存档并将其存储在本地磁盘上。听起来很简单。

我首先创建了一个集成测试,该测试启动 spring 服务器和另一个 WebFlux 服务器,该服务器具有一个模拟 REST 端点,该端点为 tar 存档提供服务。

测试应该是这样的:

1)应用程序:获取 mock-server/archive

2) 模拟服务器:响应状态为 200,主体中的 tar 存档作为类型附件

3)app:阻塞直到收到所有字节,然后解压并使用文件

我遇到的问题是,当我尝试将字节收集到ByteArray应用程序的a 中时,它会永远阻塞。

我的mock-server/archive路线到以下功能:

fun serveArchive(request: ServerRequest): Mono<ServerResponse> {
    val tarFile = FileSystemResource(ARCHIVE_PATH)
    assert(tarFile.exists() && tarFile.isFile && tarFile.contentLength() != 0L)
    return ServerResponse
            .ok()
            .contentType(MediaType.APPLICATION_OCTET_STREAM)
            .contentLength(tarFile.contentLength())
            .header("Content-Disposition", "attachment; filename=\"$ARCHIVE_FNAME\"")
            .body(fromResource(tarFile))
}
Run Code Online (Sandbox Code Playgroud)

然后我的应用程序使用以下内容调用它:

private fun retrieveArchive {
    client.get().uri(ARCHIVE_URL).accept(MediaType.APPLICATION_OCTET_STREAM)
            .exchange()
            .flatMap { response ->
                storeArchive(response.bodyToMono())
            }.subscribe()
}

private fun storeArchive(archive: Mono<ByteArrayResource>): Mono<Void> …
Run Code Online (Sandbox Code Playgroud)

kotlin spring-webflux

2
推荐指数
1
解决办法
4260
查看次数

标签 统计

docker ×1

docker-compose ×1

kotlin ×1

spring-webflux ×1