我想集成测试在 docker 环境中运行的一些服务。他们必须在连接时互相交谈。所以我需要以某种方式暴露彼此之间的端口。是否可以使用测试容器库进行此设置?我没有找到任何码头。
经过测试的应用程序在本地运行,它将连接到 dockerised 服务器:
- mysql
- 后端一
为了使后端更加困难,一台服务器需要与 mysql 服务通信。这可以使用测试容器吗?
我想集成测试在 docker 环境中运行的一些服务。他们必须在连接时互相交谈。所以我需要以某种方式暴露彼此之间的端口。是否可以使用测试容器库进行此设置?我没有找到任何码头。
经过测试的应用程序在本地运行,它将连接到 dockerised 服务器:
为了使后端更加困难,一台服务器需要与 mysql 服务通信。这可以使用测试容器吗?
Testcontainers 支持网络,测试中有几个例子。
您需要首先创建一个网络(通过Network.newNetwork()
),然后使用withNetwork
/withNetworkAliases
将您的容器“连接”到同一个网络。
通常,当容器之间需要网络通信时,应该在docker 级别创建一个网络,并且容器应该共享它。
使用 可以简化事情docker-compose
,默认情况下,它会为docker-compose
文件中声明的所有服务创建一个网络。然后容器可以通过它们的服务名称进行通信。
我从未使用过Testcontainers 项目,但我在具有 docker -compose 模块的文档中看到。
从上面的网址引用:
Testcontainers 将启动一个小型“大使”容器,它将在 Compose 管理的容器和测试可访问的端口之间进行代理。这是使用一个单独的、最小的容器来完成的,该容器将 socat 作为 TCP 代理运行。
还有一个示例,您可以基于 docs url。