繁体   English   中英

使用环境变量在主机上检测Docker运行时

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM