Testcontainers:使用 GitLab CI “等待容器端口打开超时”

Posted

技术标签:

【中文标题】Testcontainers:使用 GitLab CI “等待容器端口打开超时”【英文标题】:Testcontainers: "Timed out waiting for container port to open" with GitLab CI 【发布时间】:2021-03-13 21:00:36 【问题描述】:

将以下DockerComposeContainer 作为我的集成测试的一部分:

DockerComposeContainer container = new DockerComposeContainer(new File("docker-compose.yml"))
        .withExposedService("es1", 9200, Wait.forListeningPort().withStartupTimeout(Duration.ofSeconds(300)));

这在本地工作,但在我的.gitlab-ci.yml 中作为 maven 命令的一部分运行此测试时,每个https://www.testcontainers.org/supported_docker_environment/continuous_integration/gitlab_ci/ 包括:

services:
  - docker:dind

variables:
  DOCKER_HOST: "tcp://docker:2375"
  DOCKER_DRIVER: overlay2

这会在等待 300 秒超时时间后导致以下错误:

等待容器端口打开超时(dind 端口:[9200, 32769, 9300] 应该正在监听)

一直没能在网上找到解决办法。

编辑:

这是我的 docker-compose.yml:

version: '3.7'
services:
  es1:
    image: docker.elastic.co/elasticsearch/elasticsearch:7.7.0
    hostname: es1
    ports:
      - 9200:9200
      - 9300:9300
    environment:
      - "dicovery.type=single-node"
    volumes:
      - ./tmpdata/es1/data:/usr/share/elasticsearch/data

【问题讨论】:

【参考方案1】:

这显然是由于 Gitlab 运行器上缺少 docker-compose 安装。我最终使用了ElasticsearchContainer 而不是DockerComposeContainer

【讨论】:

以上是关于Testcontainers:使用 GitLab CI “等待容器端口打开超时”的主要内容,如果未能解决你的问题,请参考以下文章

在 Gitlab-ci 中使用带有 docker-compose 的 Testcontainers 运行端到端测试

testcontainers-node 无法在 Gitlab CI 上启动 ryuk

从资源中读取文件在 gitlab CI 中不起作用

在 Gitlab Ci 中将 RabbitMq 作为 GenerigContainer 启动

如何使用 Testcontainers 发送信号?

使用 testcontainers 测试 kafka 和 spark