Java 如何在testcontainers上从一个容器到另一个容器公开端口?
我想对docker环境上运行的几个服务进行集成测试。他们必须互相交谈,因为他们是联系在一起的。所以我需要以某种方式暴露彼此之间的端口。使用测试容器库可以进行此设置吗?我没有在上面找到码头 本地运行的测试应用程序,将连接到停靠的服务器:Java 如何在testcontainers上从一个容器到另一个容器公开端口?,java,docker,testcontainers,Java,Docker,Testcontainers,我想对docker环境上运行的几个服务进行集成测试。他们必须互相交谈,因为他们是联系在一起的。所以我需要以某种方式暴露彼此之间的端口。使用测试容器库可以进行此设置吗?我没有在上面找到码头 本地运行的测试应用程序,将连接到停靠的服务器: mysql 后端一 为了让后端更困难,一台服务器需要与mysql服务对话。 使用testcontainers可以做到这一点吗 通常,当需要容器之间的网络通信时,应在处创建网络,容器应共享该网络 通过使用docker compose,事情可以简化,默认情况下,它
- mysql
- 后端一
使用testcontainers可以做到这一点吗 通常,当需要容器之间的网络通信时,应在处创建网络,容器应共享该网络 通过使用
docker compose
,事情可以简化,默认情况下,它会为docker compose
文件中声明的所有服务创建一个网络。然后容器可以通过其服务名称进行通信
我从未使用过Testcontainers项目,但我在文档中看到了一个
从上面的url引用:
Testcontainers将启动一个小的“大使”容器,它将
组合托管容器和以下端口之间的代理
可访问到您的测试。这是使用一个单独的、最小的
作为TCP代理运行socat的容器
还有一个示例,您可以基于文档url。通常,当需要容器之间的网络通信时,应在处创建网络,容器应共享该网络 通过使用
docker compose
,事情可以简化,默认情况下,它会为docker compose
文件中声明的所有服务创建一个网络。然后容器可以通过其服务名称进行通信
我从未使用过Testcontainers项目,但我在文档中看到了一个
从上面的url引用:
Testcontainers将启动一个小的“大使”容器,它将
组合托管容器和以下端口之间的代理
可访问到您的测试。这是使用一个单独的、最小的
作为TCP代理运行socat的容器
还有一个例子,您可以基于文档url。Testcontainers支持网络,有
您需要首先创建一个网络(通过
network.newNetwork()
),然后使用with network
/with networkalias
将容器“连接”到同一网络中。Testcontainers支持网络,有
您需要首先创建一个网络(通过
network.newNetwork()
),然后使用with network
/with networkalias
将您的容器“连接”到同一网络中。您能详细说明一下吗?您的意思是说您将在docker容器1中有一台服务器,在8888端口(例如)上运行,然后在container2中运行测试,该服务器将通过8888端口访问docker 1?您能详细说明吗?您是说您将在docker容器1中运行一个服务器,在8888端口(例如)上运行,然后在container2中运行测试,该服务器将通过8888端口访问docker 1?我希望得到比compose更简单的解决方案。但找不到有效的示例,其中将包含跨容器通信。我将尝试一个compose模块。Docker compose不太灵活,更难支持,我们建议改用通用容器。请参阅我关于如何实现所需功能的回答。我希望找到比编写更简单的解决方案。但找不到有效的示例,其中将包含跨容器通信。我将尝试一个compose模块。Docker compose不太灵活,更难支持,我们建议改用通用容器。请参阅我关于如何实现所需功能的回答OK。但这些容器将并行运行,对吗?但是我需要在db启动和运行之前阻止一个启动。这怎么可能呢?他们会按照你启动他们的方式运行。您可以对规则进行排序,您可以使用.start()
而不使用规则-由您决定(与Docker Compose不同)。只需为容器编写代码:)好的。但这些容器将并行运行,对吗?但是我需要在db启动和运行之前阻止一个启动。这怎么可能呢?他们会按照你启动他们的方式运行。您可以对规则进行排序,您可以使用.start()
而不使用规则-由您决定(与Docker Compose不同)。只需为容器编写代码:)