[英]Detect Docker runtime on host using environment variables
我想运行测试,以使用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主机的权限。
如果您可以在此之前运行bash,则可以运行:
export IS_DOCKER_RUNNING =`cat /var/run/docker.pid`
并检查环境变量是否为空或包含ID。
涉及到多个变量(“调用主用户是否具有权限”是一项重要的检查;“我实际上可以访问的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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.