我有一个测试,该测试将在已经具有外部docker网络的环境中与某些受控容器一起运行。
如何使我的测试容器连接到所述网络?
我尝试下面的代码没有成功:
public static final GenericContainer tcpController;
static {
Network network = Network.builder().id("existent-external-network").build();
tcpController = new GenericContainer("tcp_controller:0.0.1")
.withExposedPorts(3005)
.withEnv("TCP_PORT", "3005")
.withNetwork(network);
tcpController.start();
}
本质上,我想做以下docker-compose的等效操作
version: "3.4"
services:
machine:
image: tcp_controller:0.0.1
environment:
- TCP_PORT=3005
networks:
default:
external:
name: existent-external-network
编辑1:
维塔利的建议行之有效。
这是我实际上使用他的建议和docs做的
考虑TcpHandler只是一个需要IP和端口的类
public static final DockerComposeContainer compose;
static {
compose = new DockerComposeContainer(
new File("src/test/java/docker-compose.yml")
)
.withExposedService("machine", 3005)
.withLocalCompose(true);
compose.start();
}
@BeforeAll
static void setup() throws IOException, TimeoutException {
settings = Settings.getInstance();
// We need to get the actual host and port using service name
settings.tcpURL = compose.getServiceHost("machine", 3005);
settings.tcpPort = compose.getServicePort("machine", 3005);
tcp = new TCPHandler(settings.tcpURL, settings.tcpPort);
tcp.start();
}
最佳答案
Fabio,不确定是否尝试过-将docker与本地compose配合使用对您有用吗?喜欢:
@Container
public static DockerComposeContainer docker = new DockerComposeContainer(
new File("src/test/resources/compose-mysql-test.yml")
)
.withLocalCompose(true);
关于docker - 如何在测试容器中使用现有网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61795976/