如何在测试容器上的各个容器之间暴露端口?

时间:2019-07-15 09:08:13

标签: java docker testcontainers

我想集成测试在docker环境中运行的少量服务。他们在连接时必须互相交谈。因此,我需要以某种方式公开彼此之间的端口。使用测试容器库是否可以进行此设置?我没有找到任何底座。

在本地运行的经过测试的应用程序,它将连接到dockerized服务器:

  • mysql
  • 一个后端

为了使后端更加困难,一台服务器需要与mysql服务对话。 是否可以使用testcontainer?

2 个答案:

答案 0 :(得分:1)

测试容器支持网络,有a few examples in the tests

您需要先创建一个网络(通过Network.newNetwork(),然后使用withNetwork / withNetworkAliases将容器“连接”到同一网络。

答案 1 :(得分:0)

通常,当需要容器之间的网络通信时,应在docker level处创建网络,并且容器应共享该网络。

可以使用docker-compose简化操作,默认情况下,docker-compose文件中声明的所有服务都会创建一个网络。然后,容器可以通过其服务名称进行通信。

从未使用过 Testcontainers项目,但在包含docker-compose module的文档中看到了。

从URL上方引用:

  

测试容器将旋转一个小的“大使”容器,该容器将   组成托管容器和端口之间的代理   可访问您的测试。这是使用单独的,最少的   将socat作为TCP代理运行的容器。

还有一个可以基于文档url的示例。