Bitbucket Pipelines中用docker-maven-plugin推送镜像到DockerHub配置问题
问题解决方法
核心报错原因
你本地环境有Docker daemon正常监听对应端口,但Bitbucket Pipelines默认未启用Docker服务,且没有对应daemon进程监听localhost:2375,所以触发连接拒绝报错。
1. 调整pom.xml配置
无需在<dockerHost>标签硬编码地址,fabric8 docker-maven-plugin默认会自动读取系统环境变量中的Docker相关配置,直接删除pom中的<dockerHost>???????????</dockerHost>行即可同时兼容本地和Bitbucket环境。
同时不要硬编码DockerHub凭证,调整为读取Maven参数避免敏感信息泄露:
<plugin> <groupId>io.fabric8</groupId> <artifactId>docker-maven-plugin</artifactId> <configuration> <verbose>true</verbose> <pushRegistry>true</pushRegistry> <authConfig> <username>${docker.hub.username}</username> <password>${docker.hub.password}</password> </authConfig> <images> <image> <registry>registry.hub.docker.com</registry> <name>${dockerhub.repository}</name> <build> <dockerFileDir>${project.basedir}</dockerFileDir> <tags> <tag>${docker.tag}</tag> </tags> <noCache>true</noCache> </build> </image> </images> </configuration> <executions> ... </plugin>
2. 配置bitbucket-pipelines.yml启用Docker服务
在你的流水线配置中为构建步骤绑定Docker服务,Bitbucket会自动注入DOCKER_HOST等环境变量供插件读取:
# 定义Docker服务的内存配置,避免构建大镜像时OOM definitions: services: docker: memory: 2048 pipelines: default: - step: name: 构建推送Docker镜像 # 绑定Docker服务 services: - docker script: # 执行Maven命令时传入DockerHub凭证 - mvn clean package docker:build docker:push -Ddocker.hub.username=$DOCKER_HUB_USERNAME -Ddocker.hub.password=$DOCKER_HUB_PASSWORD
3. 配置Bitbucket仓库凭证变量
进入Bitbucket对应仓库 -> 「仓库设置」 -> 「仓库变量」,添加两个加密变量:
DOCKER_HUB_USERNAME:DockerHub登录用户名DOCKER_HUB_PASSWORD:DockerHub登录密码,推荐使用权限受限的个人访问令牌替代明文密码
可选强制指定dockerHost的配置
如果你需要显式配置<dockerHost>标签,可以设置为读取环境变量即可:
<dockerHost>${env.DOCKER_HOST}</dockerHost>
Bitbucket Pipelines中Docker服务默认的DOCKER_HOST值为tcp://127.0.0.1:2375,无需额外配置TLS校验。
内容的提问来源于stack exchange,提问作者Shvalb
相关产品推荐
相关产品推荐

