首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有对接套接字绑定的gitlab运行程序和测试容器

带有对接套接字绑定的gitlab运行程序和测试容器
EN

Stack Overflow用户
提问于 2022-06-23 15:12:09
回答 1查看 483关注 0票数 1

我正在使用测试容器启动Postgresql以进行junit测试。在当地一切都很好。这是我的小测试项目:

https://gitlab.com/janning/tpj-testcontainer

我可以在IDE中运行测试,并使用./gradlew test在CLI上运行测试

现在,我想在我的Gitlab管道中运行它,但是没有停靠码头(dind)。因此,我需要挂载码头套接字,这是在这里记录的:情报/

所以我把我的gitlab跑步者配置成这样:

代码语言:javascript
复制
concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800
[[runners]]
  name = "kt103-tpj"
  url = "https://gitlab.com"
  token = "XXXXXXXXXXXXXXXXX"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "registry.gitlab.com/janning/tpj-testcontainer/debian:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    extra_hosts = ["host.docker.internal:host-gateway"]
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    shm_size = 0

首先,我的gitlab-ci.yml构建了一个Dockerimage,因为我需要openjdk-17和一些对接命令。

代码语言:javascript
复制
variables:
  TESTCONTAINERS_HOST_OVERRIDE: "host.docker.internal"
stages:
  - dockerimage
  - test

dockerimage:
  image: docker:latest
  stage: dockerimage
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" $CI_REGISTRY
  script:
    - tag=":latest"
    - docker build --pull -t "$CI_REGISTRY_IMAGE/debian${tag}" .
    - docker push "$CI_REGISTRY_IMAGE/debian${tag}"

test:
  stage: test
  image: $CI_REGISTRY_IMAGE/debian:latest
  script:
    - echo $DOCKER_HOST
    - echo $DOCKER_TLS_VERIFY
    - echo $DOCKER_CERT_PATH
    - ./gradlew test
  artifacts:
    when: always
    reports:
      junit: build/test-results/test/**/TEST-*.xml

作业“测试”失败(完整日志在这里)

任务:测试HalloTest > test()失败的java.lang.IllegalStateException在RyukResourceReaper.java:129 1测试完成,1失败任务:测试失败

如果深入研究junit的结果,我可以看到以下栈迹

代码语言:javascript
复制
java.lang.IllegalStateException: Could not connect to Ryuk at host.docker.internal:49158
at org.testcontainers.utility.RyukResourceReaper.maybeStart(RyukResourceReaper.java:129)
at org.testcontainers.utility.RyukResourceReaper.init(RyukResourceReaper.java:42)
at org.testcontainers.DockerClientFactory.client(DockerClientFactory.java:203)
at ...

我想这和我建立的码头形象有关。但我被困住了,因为我不知道问题出在哪里。我不知道如何解决或调试这种情况。

ryuk容器是在运行gitlab的主机中启动的。但它不能连接:

-f ba62a173aafd 2022/06/24 09:42:512022/06/24 09:42:51 Docker守护进程可用2022/06/24 09:42:51从端口8080.2022/06/24 09:42:51开始!恐慌:超时等待第一个连接goroutine 1运行: main.main() main.main +0x449

EN

回答 1

Stack Overflow用户

发布于 2022-06-24 18:32:03

问题只是防火墙问题,阻碍了码头集装箱之间的通信。由于我可以从外部到达任何码头集装箱,我花了很长时间才意识到这一点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72732540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档