Демонстрационный проект Spring Boot с использованием Testcontainers для интеграционных тестов с PostgreSQL.
- Spring Boot 3.5.8
- Java 21
- PostgreSQL
- Testcontainers
- JPA / Hibernate
- Lombok
./gradlew testПроект настроен для работы с удаленным Docker daemon через DinD.
Вариант 1: С изолированной сетью (по умолчанию)
docker run --privileged --name docker-dind -d \
-p 2375:2375 \
-e DOCKER_TLS_CERTDIR="" \
--dns 8.8.8.8 \
--dns 8.8.4.4 \
docker:dindtestcontainers.ryuk.container.enabled=false.
Вариант 2: С host network (для работы Ryuk)
docker run --privileged --name docker-dind -d \
--network host \
-e DOCKER_TLS_CERTDIR="" \
--dns 8.8.8.8 \
--dns 8.8.4.4 \
docker:dind✅ При этом варианте порты будут доступны напрямую на хосте, и Ryuk сможет работать.
--network host флаг -p 2375:2375 не нужен, так как порты уже доступны.
Все настройки выполняются через файл src/test/resources/testcontainers.properties:
docker.host=tcp://127.0.0.1:2375
testcontainers.ryuk.container.enabled=falseДля удаленного сервера измените адрес:
docker.host=tcp://192.168.1.100:2375После запуска тестов проверьте, что контейнеры запускаются в DinD:
# Контейнеры должны быть видны через DinD
DOCKER_HOST=tcp://127.0.0.1:2375 docker ps
# Контейнеры НЕ должны быть видны через локальный Docker
docker ps | grep testcontainerssrc/main/java- основной код приложенияsrc/test/java- тесты с использованием Testcontainerssrc/test/resources/testcontainers.properties- конфигурация Testcontainers