You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在GitLab CI中如何访问待测试的docker化应用?

GitLab CI环境下docker-compose服务访问地址说明

分两种常见场景对应不同的访问地址:

场景1:测试代码直接运行在CI Job容器中(最常用场景)

根据你使用的GitLab Runner类型不同,地址分为两类:

  • 如果你用的是宿主机直接安装Docker的Shell Runner:Docker daemon直接运行在Runner所在宿主机上,端口映射直接绑定宿主机端口,你可以和本地运行一致,使用 http://localhost:8080 访问前端,http://localhost:8082 访问后端API。
  • 如果你用的是Docker-in-Docker(dind)模式的Runner(GitLab CI运行Docker相关任务的主流配置):你的docker-compose命令实际连接的是独立的dind服务容器的Docker daemon,端口映射绑定的是dind容器的网卡,此时不能用localhost访问,需要用dind服务的默认主机名docker作为地址,对应前端地址为 http://docker:8080,后端API地址为 http://docker:8082。

场景2:测试代码也作为docker-compose的服务运行

如果你的TestNG测试代码也打包成镜像,加入到同一个docker-compose.yml的服务列表中运行,那么所有服务都处于同一个Docker自定义网络内,你可以直接用docker-compose的服务名作为主机名访问,不需要走端口映射:

  • 测试代码访问前端:http://frontendapp:80
  • 测试代码访问后端API:http://demoapi:80
    该方式不需要适配不同的Runner环境,稳定性更高,更推荐使用。

额外优化建议

  • 你可以在CI脚本中docker-compose启动完成后,执行docker-compose port <服务名> <容器内端口>命令动态获取对应服务的可访问地址,避免硬编码地址出错,比如获取前端地址执行docker-compose port frontendapp 80即可。
  • 当前的depends_on配置只会等待容器启动,不会等待容器内的应用进程就绪,建议给每个服务增加healthcheck配置,避免测试启动时服务还未初始化完成导致用例失败。

内容的提问来源于stack exchange,提问作者gandra404

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:45:03