0

我想运行测试以验证使用 TestContainers 正确执行 Flyway 迁移。

使用 JUnit5,我想仅在运行 Docker 守护程序的主机上启用这些测试(@EnabledIfSystemProperty(named = "docker...", matches = "")https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution-system -属性

我的问题是:如何使用环境变量检查主机上是否有 Docker 守护程序可用?

PS:我无权访问 CI 主机。

4

2 回答 2

0

如果您可以在此之前运行 bash,则可以运行:

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

并检查环境变量是否为空或包含 id。

于 2018-11-23T10:43:46.180 回答
0

这涉及到几个变量(“调用用户是否有权限”是一个重要的检查;“我可以访问的 Docker 实际上是本地的”是另一个有趣的问题)并且不会有一个神奇的环境变量告诉你这个。

我可能会尝试运行一个一次性容器;类似的东西

docker run --rm busybox /bin/true

如果它成功了,则继续进行其他基于 Docker 的端到端测试。

基于@NinaHashemi的答案,如果它必须是环境变量,并且您可以在测试之前/周围运行shell脚本(任何POSIX shell,不一定是bash),那么您可以运行

if docker run --rm busybox /bin/true >/dev/null 2>&1; then
    export IS_DOCKER_RUNNING=yes
fi
于 2018-11-23T13:08:47.973 回答