Тестовым контейнерам не удается найти среду Docker в Windows 11 с Spring Boot 3 и Java 21.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Тестовым контейнерам не удается найти среду Docker в Windows 11 с Spring Boot 3 и Java 21.

Сообщение Anonymous »

Я прохожу курс Spring Boot 3 и пытаюсь запускать интеграционные тесты, используя Testcontainers с PostgreSQL. Моя среда — Windows 11, работает Docker Desktop, но тесты немедленно завершаются с ошибками подключения.
Среда:
  • ОС: Windows 11
  • Java: 21 (Corretto)
  • Spring Boot: 3.4.1
  • Тестовые контейнеры: 1.20.4
  • Docker Desktop: Работает (v4.37+)
Проблема: При запуске PersonControllerTest я получаю исключение java.lang.IllegalStateException: не удалось найти действительную среду Docker. Журналы показывают, что и EnvironmentAndSystemPropertyClientProviderStrategy, и NpipeSocketClientProviderStrategy завершились неудачей.
Что я пробовал до сих пор:
  • Конфигурация Docker: Включено «Выставить демон на tcp://localhost:2375 без TLS» в Docker Desktop настройки.
  • Переменные среды: Добавлен DOCKER_HOST со значением tcp://localhost:2375 как в пользовательскую, так и в системную переменную среды в Windows.
  • Проверка: Запустил netstat -an | findstr 2375 и подтвердил, что порт прослушивается (

    Код: Выделить всё

    TCP 0.0.0.0:2375 ... LISTENING
    ).
  • Перезапуск: Перезапустил IntelliJ IDEA и компьютер несколько раз.
  • Файл конфигурации: Пытался создать файл .testcontainers.properties в доме пользователя с помощью docker.host=tcp://localhost:2375, но это не помогло работает.
Фрагмент кода (

Код: Выделить всё

AbstractIntegrationTest.java
):[/b]
Java

Код: Выделить всё

@ContextConfiguration(initializers = AbstractIntegrationTest.Initializer.class)
public class AbstractIntegrationTest {

static class Initializer implements ApplicationContextInitializer {
// Changed from postgres:18 to postgres:16-alpine just to be safe
static PostgreSQLContainer postgresSQL = new PostgreSQLContainer("postgres:16-alpine");

private static void startContainers() {
Startables.deepStart(Stream.of(postgresSQL)).join();
}

@Override
public void initialize(ConfigurableApplicationContext applicationContext) {
startContainers();
// ... (property mapping logic)
}
}
}
Соответствующий журнал ошибок:
Открытый текст

Код: Выделить всё

java.lang.IllegalStateException: Could not find a valid Docker environment. Please check configuration. Attempted configurations were:
EnvironmentAndSystemPropertyClientProviderStrategy: failed with exception BadRequestException (Status 400: ...)
NpipeSocketClientProviderStrategy: failed with exception BadRequestException (Status 400: ...)
Последующая ошибка — превышение порога отказа ApplicationContext (1), что означает, что контекст не удалось запустить изначально из-за проблемы с Docker.
Кто-нибудь знает, почему Testcontainers не может подключиться к Docker Desktop в Windows даже с явно установленным DOCKER_HOST?>

Подробнее здесь: https://stackoverflow.com/questions/798 ... ing-boot-3
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»