我想运行测试以验证使用TestContainers正确执行Flyway迁移。
使用JUnit5,我只想在运行Docker守护程序(@EnabledIfSystemProperty(named = "docker...", matches = "")
)https://junit.org/junit5/docs/current/user-guide/#writing-tests-conditional-execution-system-properties的主机上启用这些测试。
我的问题是:如何使用环境变量检查主机上是否有Docker守护进程可用?
PS:我无权访问CI主机。
答案 0 :(得分:0)
如果您可以在此之前运行bash,则可以运行:
export IS_DOCKER_RUNNING =`cat /var/run/docker.pid`
,然后检查环境变量是否为空或包含ID。
答案 1 :(得分: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