如何在其他主机上运行Testcontainer

时间:2020-06-10 07:58:50

标签: windows macos docker testcontainers

启动许多Testcontainer时,我的16GB MBP变得非常慢。我想在运行Windows的强大桌面上运行它们。如果这可以从我的本地网络之外运行,那就更好了。

1 个答案:

答案 0 :(得分:2)

首先,在两台计算机上安装一个VPN(例如Tailscale)。您需要这样做,因为Testcontainers使用的是随机端口,因此,您不仅可以重定向使用的端口,还需要能够完全访问接口上所有可能的端口。

客户

然后在客户端上使用Testcontainers调用测试,编辑一些文件。

在〜/ .docker-java.properties或C:/Users/myuser/.docker-java.properties中:

DOCKER_HOST=tcp://DOCKER_HOST_VPN_IP:2375
DOCKER_TLS_VERIFY=0

在〜/ .testcontainers.properties或C:/Users/myuser/.testcontainers.properties中:

docker.client.strategy=org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy

服务器

在运行Docker容器的机器上:

在Docker Desktop的“设置>常规”中启用“暴露守护程序”。

在Windows上:

在提升的命令提示符下运行,以将数据包从Tailscale IP转发到本地Docker: netsh interface portproxy add v4tov4 listenport=2375 connectaddress=127.0.0.1 connectport=2375 listenaddress=<WINDOWS_VPN_IP> protocol=tcp

为专用网络禁用防火墙。

在Linux上:

使用IPTABLES将在端口2375上传入的流量路由到127.0.0.1:

iptables -t nat -A PREROUTING -p tcp --dport 2375 -j DNAT --to-destination 127.0.0.1:2375
iptables -t nat -A POSTROUTING -j MASQUERADE.

参考

[2] https://github.com/docker-java/docker-java/blob/master/docs/getting_started.md

[2] https://www.testcontainers.org/features/configuration/