【发布时间】:2020-08-30 21:44:45
【问题描述】:
我有一个测试将在已经存在外部 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:
Vitaly 的建议奏效了。
这是我根据他的建议和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();
}
【问题讨论】:
标签: docker junit testcontainers