docker - 如何在测试容器中使用现有网络?

标签 docker junit testcontainers

我有一个测试,该测试将在已经具有外部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/

相关文章:

r - ShinyProxy Docker - 最大线程数(最大并发用户数)

docker - 带有Hyper-V示例的Docker Windows让我感到困惑为什么阿尔卑斯的例子不能像我想的那样起作用?

java - 当我有一个使用 @RunWith 的测试套件时,如何获得更多日志记录反馈?

java - 如何解决不必要的 stub 异常

java - 如何测试没有抛出异常?

java.lang.IllegalStateException : Could not find a valid Docker environment. 请查看日志并检查配置

spring - Testcontainers mongodb - 尚未提供集群描述。超时前等待 30000 毫秒

docker - 将 docker-swarm 与 dokku 一起使用

django - 如何在 Docker Compose 中将目录从一个容器复制到另一个容器?

java - 如何在 @ContextConfiguration 初始值设定项之前启动 kafka 测试容器?