Определение среды выполнения Docker на хосте с использованием переменных среды - PullRequest
0 голосов
/ 23 ноября 2018

Я хотел бы запустить тесты, проверяющие правильность выполнения миграций Flyway с использованием TestContainers.

Используя JUnit5, я хотел бы включить эти тесты только на хосте, на котором запущен демон Docker (@EnabledIfSystemProperty(named = "docker...", matches = ""))https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution-system-properties.

Мой вопрос: как я могу проверить, что демон Docker доступен на хосте с помощью переменных среды?

PS: у меня нет доступа к хосту CI.

Ответы [ 2 ]

0 голосов
/ 23 ноября 2018

С этим связано несколько переменных («есть ли у вызывающего пользователя разрешения» - это важная проверка; «есть ли у Docker доступ к локальному доступу» - это еще один интересный вопрос), и волшебства не будетпеременная окружения, которая сообщает вам об этом.

Я, вероятно, попробую запустить одноразовый контейнер;что-то вроде

docker run --rm busybox /bin/true

и, если это удастся, продвиньтесь вперед с другими сквозными тестами на основе Docker.

Опираясь на ответ @ NinaHashemi, если это должна быть средапеременной, и вы можете запустить сценарий оболочки до или вокруг ваших тестов (любая оболочка POSIX, не обязательно bash), затем вы можете запустить

if docker run --rm busybox /bin/true >/dev/null 2>&1; then
    export IS_DOCKER_RUNNING=yes
fi
0 голосов
/ 23 ноября 2018

Если вы можете запустить bash до этого, вы можете запустить:

export IS_DOCKER_RUNNING =`cat /var/run/docker.pid`

и проверить, является ли переменная среды пустой или содержит идентификатор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...