如何从Docker容器中testing外部服务?

我们最近将系统切换到了Docker。 这涉及到一些容器 – 一个用于应用程序,一个用于mysql等。但是,现在我已经遇到了一个问题,我没有想到在开始之前:)

我们有一些系统级集成testing,旨在testing与外部服务的交互。 执行诸如停止redis,发出请求,检查系统响应正确,然后重新启动redis并确保它重新连接正确。 以前,这很简单,

subprocess.call('service redis stop') 

例如。 但现在…与我们的Python代码的应用程序容器不能控制Redis的外部服务器。 有没有人有任何想法,以适应现有的testing在新环境中正常工作的最佳方式?

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

如果你想变得有趣,你可以创build一个容器,将docker unix socket安装在里面,这样你就可以和主机上的docker交谈了。 这实际上是给主机的根访问该容器,所以要小心,如果你走这条路线。