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

Jenkins中使用docker-maven-plugin执行Maven集成测试遇DOCKER_HOST缺失问题

解决Jenkins上docker-maven-plugin缺失DOCKER_HOST的问题

这个问题我之前帮团队排查过类似情况,核心原因是:本地环境(比如用Docker Desktop)会自动帮你配置DOCKER_HOST环境变量,或者插件能自动探测到Docker守护进程的地址,但Jenkins服务器通常不会默认配置这个变量,导致插件找不到Docker服务。

下面是几种实用的解决办法:

1. 在Jenkins全局配置中添加环境变量

  • 进入Jenkins的「Manage Jenkins」→「Configure System」页面
  • 找到「Global properties」板块,勾选「Environment variables」
  • 添加新变量:
    • 名称:DOCKER_HOST
    • 值:根据Jenkins服务器的Docker部署情况填写——Linux环境一般是unix:///var/run/docker.sock;Windows环境如果是本地Docker daemon,可填tcp://localhost:2375(注意:裸奔式的2375端口不建议用于生产,建议搭配TLS配置)
  • 保存配置后重新触发构建,插件就能自动读取到这个环境变量了

2. 在pom.xml中直接指定dockerHost参数

如果不想改动Jenkins全局配置,可以直接在插件配置里明确指定(建议结合Maven Profile区分不同环境):

<plugin>
  <groupId>io.fabric8</groupId>
  <artifactId>docker-maven-plugin</artifactId>
  <version>0.20.1</version>
  <configuration>
    <!-- 手动指定Docker守护进程地址 -->
    <dockerHost>unix:///var/run/docker.sock</dockerHost>
    <!-- 其他插件配置... -->
  </configuration>
  <executions>
    <execution>
      <id>prepare-itdatabase</id>
      <phase>pre-integration-test</phase>
      <goals>
        <goal>start</goal>
      </goals>
    </execution>
  </executions>
</plugin>

3. 用Jenkins Pipeline脚本设置环境变量(如果使用Pipeline)

如果你的Jenkins用的是Pipeline构建,可以在脚本里直接注入环境变量:

pipeline {
  agent any
  environment {
    DOCKER_HOST = 'unix:///var/run/docker.sock'
  }
  stages {
    stage('执行集成测试') {
      steps {
        sh 'mvn clean verify'
      }
    }
  }
}

额外注意事项

  • 确保Jenkins运行用户(比如jenkins用户)有权限访问/var/run/docker.sock,可以执行命令sudo usermod -aG docker jenkins将用户加入docker组,之后重启Jenkins服务
  • 如果使用Docker-in-Docker(DinD)的Jenkins Agent,DOCKER_HOST需要设置为tcp://localhost:2376(带TLS)或tcp://localhost:2375(仅测试环境使用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:01:09