Как я могу использовать Testcontainers для создания Dockerfile?JAVA

Программисты JAVA общаются здесь
Anonymous
Как я могу использовать Testcontainers для создания Dockerfile?

Сообщение Anonymous »

Я хочу создать приложение. Для тестирования он использует тест-контейнеры. Сборка будет работать на CI и на машинах разработчиков. Dockerfile более или менее:

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

FROM amazoncorretto:17-alpine as builder
add . .
run ./gradlew build

from amazoncorretto:17-alpine
copy --from=builder build/libs/*.jar app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
И я запускаю сборку с помощью docker build.
Часть сборки ./gradlew запускает тесты с помощью контейнеров Tests и использует

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

val sftpDocker = GenericContainer(DockerImageName.parse("atmoz/sftp:alpine"))
И он возвращает

java.lang.IllegalStateException: не удалось найти допустимую среду Docker. Просмотрите журналы и проверьте конфигурацию.

Я знаю, что:
  • В Testcontainers есть свое собственный клиент API-интерфейса докера и не требует установки докера внутри контейнера Alpine 3.
  • Кто-то сделал это, используя образ «docker:20.10.14-dind». Но я не знаю, как это подходит для моей проблемы. 4
  • Я могу смонтировать /var/run/docker.sock во время запуска Docker... но я использую команду RUN внутри файла dockerfile и сборки docker... вместо этого
  • Я могу предоставить DOCKER_HOST, а тестовые контейнеры должны использовать шлюз по умолчанию Айпи адрес. Но это менее безопасно, чем использование сокета.
Итак, есть ли способ использовать сокет в этой настройке? Если нет, то как мне запустить Docker моего хоста, чтобы открыть TCP вместо сокета?

Подробнее здесь: https://stackoverflow.com/questions/743 ... dockerfile

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