【问题标题】:Testcontainers: "Timed out waiting for container port to open" with GitLab CITestcontainers:使用 GitLab CI “等待容器端口打开超时”
【发布时间】:2024-01-07 16:02:01
【问题描述】:

将以下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

【问题讨论】:

    标签: docker docker-compose gitlab gitlab-ci testcontainers


    【解决方案1】:

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

    【讨论】: