Запуск теста с testcontainers в составе Dockerfile - PullRequest
0 голосов
/ 03 апреля 2020

Мой dockerfile выглядит примерно так:

FROM maven:3-jdk-11-slim
COPY pom.xml .
COPY src src
RUN mvn clean install

Это означает, что частью сборки является выполнение модульных тестов. Некоторые из модульных тестов используют тестконтейнер. Запуск mvn clean install на моей локальной машине работает нормально, но запуск docker build . -t my-app - нет, потому что тестовые контейнеры не запускаются.

(...)
15:54:38.793 [ducttape-0] DEBUG org.testcontainers.dockerclient.DockerClientProviderStrategy - Pinging docker daemon...
15:54:38.794 [ducttape-0] DEBUG com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: org.testcontainers.dockerclient.transport.okhttp.OkHttpDockerCmdExecFactory$1@355cb260
15:54:39.301 [ducttape-0] DEBUG org.testcontainers.dockerclient.DockerClientProviderStrategy - Pinging docker daemon...
15:54:39.301 [ducttape-0] DEBUG com.github.dockerjava.core.command.AbstrDockerCmd - Cmd: org.testcontainers.dockerclient.transport.okhttp.OkHttpDockerCmdExecFactory$1@1c1a1359
15:54:39.469 [main] ERROR org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy - ping failed with configuration Environment variables, system properties and defaults. Resolved dockerHost=unix:///var/run/docker.sock due to org.rnorth.ducttape.TimeoutException: Timeout waiting for result with exception
org.rnorth.ducttape.TimeoutException: Timeout waiting for result with exception
(...)

Я видел примеры запуска docker run с работающими тестовыми контейнерами, но как мне заставить мою docker build работать?

Помощь очень ценится.

1 Ответ

0 голосов
/ 06 апреля 2020

Для дальнейшего использования: я считаю, что это просто невозможно.

docker run позволяет вам установить сокет Docker (и, таким образом, получить доступ к демону Docker хоста) с -v /var/run/docker.sock:/var/run/docker.sock.

docker build не поддерживает такой аргумент.

Мой обходной путь - изменить мой Dockerfile на RUN mvn clean install -Dmaven.test.skip=true и запустить модуль тесты отдельно.

...