【问题标题】:Docker Binding parse exception with testcontainersDocker Binding 使用 testcontainers 解析异常
【发布时间】:2021-03-07 18:54:44
【问题描述】:

我想运行一些集成测试,其中包括使用 org.testcontainers Docker Compose 模块设置一个完整的环境。我是 Windows 和 Docker 测试的新手,测试容器也是如此。

使用版本:

  • Docker 桌面社区:2.5.0.0
  • org.testcontainers:testcontainers:1.15.0
  • org.springframework.boot 2.3.4.

我的代码如下所示:

@ClassRule
public static DockerComposeContainer environment = new DockerComposeContainer(
                    new File("C:\\dev\\myproject\\myapp\\docker-compose\\docker-compose.env.yml"),
                    new File("C:\\dev\\myproject\\myapp\\docker-compose\\docker-compose.yml"))
                    .withExposedService("myservice_1", 9999)
                    .withLocalCompose(true);

我的撰写文件看起来像这样。

services:
  myservice:
    image: myapp/myservice:latest
    hostname: myservice
    volumes:
    - ../volumeDir:/app/volumeDir
    - ../config:/app/config
    expose:
    - 9999
    ports:
    - 9999:9999
    command: -Dspring.liquibase.enabled=true
    networks:
    - internet

看起来像一些绑定错误,堆栈跟踪中最重要的部分:

>     java.lang.RuntimeException: java.lang.RuntimeException: org.testcontainers.shaded.com.fasterxml.jackson.databind.exc.ValueInstantiationException:
> Cannot construct instance of `com.github.dockerjava.api.model.Binds`,
> problem: Error parsing Bind
> 'C:\dev\myproject\myapp\volumeDir:/app/volumeDir:rw'
>      at [Source: (org.testcontainers.shaded.okio.RealBufferedSource$1); line: 1,
> column: 1369] (through reference chain:
> com.github.dockerjava.api.command.InspectContainerResponse["HostConfig"]->com.github.dockerjava.api.model.HostConfig["Binds"])
>       at org.rnorth.ducttape.timeouts.Timeouts.callFuture(Timeouts.java:68)
>       at org.rnorth.ducttape.timeouts.Timeouts.doWithTimeout(Timeouts.java:60)
>       at org.testcontainers.containers.wait.strategy.WaitAllStrategy.waitUntilReady(WaitAllStrategy.java:53)
>     ...

我尝试将路径更改为绝对路径,没有任何区别。你有什么想法可以使这个绑定无法解析吗?

【问题讨论】:

  • 你试过用 docker-compose up -d 测试 compose 文件吗?
  • @Vitaly Chura 它在没有测试容器的情况下工作。

标签: java windows docker testcontainers docker-java


【解决方案1】:

此错误是由于 Testcontainers 和最新 Docker for Windows 版本的当前问题造成的。它们是already aware of itfix seems close to being merged

更新:版本 1.15.1 现已发布,可修复此错误。

【讨论】:

    猜你喜欢
    • 2018-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2013-04-13
    • 2020-08-31
    相关资源
    最近更新 更多