Привязка к Docker анализирует исключение с помощью testcontainers

#java #windows #docker #testcontainers #docker-java

#java #Windows #docker #testcontainers #docker-java

Вопрос:

Я хотел бы запустить некоторые интеграционные тесты, которые включали бы настройку полной среды с помощью org.testcontainers Docker Compose Module. Я новичок в тестировании Windows и Docker, то же самое с testcontainers.

Использование версий:

  • Сообщество Docker desktop: 2.5.0.0
  • org.testcontainers:testcontainers:1.15.0
  • org.springframework.загрузка 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:devmyprojectmyappvolumeDir:/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)
>     ...
 

Я попытался изменить путь на абсолютный без какой-либо разницы. Есть ли у вас какие-либо идеи, что может сделать эту привязку неразрешимой?

Комментарии:

1. Вы пробовали тестировать файл компоновки с помощью docker-compose up -d?

2. @Vitaly Chura Он работает без testcontainers.

Ответ №1:

Эта ошибка связана с текущей проблемой с Testcontainers и последней версией Docker для Windows. Они уже знают об этом, и исправление, похоже, близко к объединению.

ОБНОВЛЕНИЕ: теперь доступна версия 1.15.1, исправляющая эту ошибку.