如何从Docker容器内测试外部服务?

时间:2015-04-17 01:41:23

标签: docker integration-testing

我们最近将系统切换到了Docker。这涉及到许多容器 - 一个用于app,一个用于mysql等。但是,我现在遇到了一个问题,我在开始之前没想过:)

我们有许多系统级集成测试,旨在测试与外部服务的交互。做一些事情,比如停止redis,发出请求,检查系统是否正确响应,然后重新启动redis并确保它正确重新连接。以前,这很简单 -

subprocess.call('service redis stop')
例如,

。但现在......带有我们的python代码的app容器对redis所在的外部服务器没有任何控制权。有没有人有任何想法,以适应现有测试在新环境中正常工作的最佳方法?

1 个答案:

答案 0 :(得分:1)

您可以在主机上运行测试并使用docker命令启动和停止包含您要启用/禁用的服务的容器。

如果你想获得想象力,你可以创建一个容器,将docker unix socket安装在里面,这样你就可以在主机上与docker交谈。实际上,这主要是在主机上为该容器提供root访问权限,所以如果你这样做就要小心。