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

如何在GitLab CI中用Gradle运行需Docker环境的SpringBoot JUnit测试

GitLab CI中解决SpringBoot单元测试依赖Testcontainers的环境冲突问题

我在搭建GitLab CI流水线运行SpringBoot应用单元测试时碰到了环境冲突的麻烦:本地执行gradle test --rerun-tasks能正常跑测试,但CI环境里,因为测试依赖Testcontainers(需要启动MySQL容器),必须要有Docker环境;可如果用Docker镜像,就缺Java环境没法运行Gradle;用Java镜像的话,又没有Docker环境。

之前的.gitlab-ci.yml配置是这样的:

image: docker:latest

services:
  - docker:dind

stages:
  - test

test-backend:
  image: openjdk:17-jdk-alpine
  stage: test
  script:
    - cd spring
    - ./gradlew test --stacktrace
  tags:
    - docker

后来通过调整镜像和docker:dind服务的配置,解决了这个问题,最终可行的配置如下:

image: gradle:6.9.4-jdk17-jammy

services:
 - name: docker:dind
   command: ["--tls=false"]

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

stages:
  - test

test-api:
  stage: test
  script:
    - gradle test

关键配置说明

  • 选用gradle:6.9.4-jdk17-jammy作为基础镜像,同时集成了Gradle和Java环境,直接满足运行测试的基础要求
  • 给docker:dind服务添加--tls=false命令,关闭TLS验证,避免CI环境中证书配置的麻烦
  • 设置DOCKER_HOST指向docker:dind服务的地址,让Testcontainers能够正确找到Docker环境;DOCKER_TLS_CERTDIR设为空以禁用TLS证书目录;DOCKER_DRIVER指定为overlay2,提升容器运行性能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 01:17:32