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