Testcontainers не использует локальный образ докера

У меня медленное интернет-соединение, но у меня уже есть нужный образ докера. docker image ls:

yandex/clickhouse-server   20.1.8.41           3edfaacaf3ed        5 weeks ago         487MB

Итак, я пытаюсь использовать его в тестовых контейнерах с указанной версией (не последней)

@Rule
public ClickHouseContainer clickHouseContainer = (ClickHouseContainer)new ClickHouseContainer("yandex/clickhouse-server:20.1.8.41");

@Test
public void test() {
    System.out.println(clickHouseContainer.getJdbcUrl());
}

или с общим:

public GenericContainer genericContainer = new GenericContainer("yandex/clickhouse-server:20.1.8.41");

Но результат - ошибка:

Caused by: com.github.dockerjava.api.exception.DockerClientException: Could not pull image: net/http: TLS handshake timeout

Как я могу настроить тестовые контейнеры для использования локальных образов?


person Andrew    schedule 24.04.2020    source источник


Ответы (1)


По умолчанию testcontainers использует локальный кеш, но также полагается на на нескольких общедоступных образах «для выполнения различных действий, таких как проверки запуска, запись VNC и другие», включая очистку контейнера с помощью Ryuk.

Я думаю, что загрузка некоторых из этих вспомогательных изображений может дать сбой в вашем случае. Попробуйте втянуть их вручную. Я делаю ставку на quay.io/testcontainers/ryuk:0.2.3, потому что остальное тебе не нужно.

person sainaen    schedule 24.04.2020
comment
Я думаю, что это, вероятно, причина - вы можете попробовать увеличить уровень журнала для org.testcontainers до DEBUG, чтобы увидеть, какое изображение он пытается получить. Если это ryuk изображение, вы можете следовать инструкциям, которые здесь, чтобы настроить Testcontainers. использовать альтернативный, местный образ. - person Richard North; 29.04.2020