Docker - Jenkins 无法访问 sonarqube(通过 localhost/127.0.0.1:9000)
Posted
技术标签:
【中文标题】Docker - Jenkins 无法访问 sonarqube(通过 localhost/127.0.0.1:9000)【英文标题】:Docker - Jenkins unable to reach sonarqube (via localhost/127.0.0.1:9000) 【发布时间】:2021-12-31 10:08:10 【问题描述】:首先,我知道 *** 上有很多关于这个问题的类似帖子,我已经尝试过提供的“解决方案”。在“配置系统”中使用 localhost IP 或 Sonar Docker IP 作为 URL。但这两种方法在我的情况下似乎都不起作用。我哪里配置错了?
Sonar Docker 命令:
docker run -d --name sonarqube -e SONAR_ES_BOOTSTRAP_CHECKS_DISABLE=true -p 9000:9000 sonarqube:latest
Jenkins Docker 命令:
docker run \
--name jenkins-docker \
--rm \
--detach \
--privileged \
--network jenkins \
--network-alias docker \
--env DOCKER_TLS_CERTDIR=/certs \
--volume jenkins-docker-certs:/certs/client \
--volume jenkins-data:/var/jenkins_home \
--publish 3000:3000 \
--publish 2376:2376 \
docker:dind \
--storage-driver overlay2
Docker 网络
配置系统 - “秘密文本”包含我从 SonarQube 获得的令牌
全局工具配置
管道脚本
pipeline
agent any
stages
stage ('Checkout')
steps
git branch:'master', url: 'https://github.com/OWASP/Vulnerable-Web-Application.git'
stage('Code Quality Check via SonarQube')
steps
script
def scannerHome = tool 'SonarQube';
withSonarQubeEnv('SonarQube')
sh "$scannerHome/bin/sonar-scanner -Dsonar.projectKey=OWSAP -Dsonar.sources=."
post
always
recordIssues enabledForFailure: true, tool: sonarQube()
【问题讨论】:
据我所知,jenkins 中的 sonarqube url 应该是http://sonarqube:9000
,因为这是 jenkins-server 可以访问 sonarqube-server(在 docker 网络中)的 DNS 名称。
感谢您的回复,但我按照您的建议尝试了,使用 sonarqube:9000 也无法访问
您能否验证 - sonarqube 容器正在运行(docker ps
应该在 RUNNING
状态下显示它) - sonarqube 可以通过 http://loclahost:9000
从 docker 主机访问 - 您可以 ping 主机 @ 987654335@ 来自 jenkins 容器 - 你可以 curl http://sonarqube:9000
来自 jenkins 容器吗?
我只能通过 localhost:9000 访问 sonarqube URL。我尝试使用 IP 地址和 DNS,但无法加载 sonarqube 页面
是的,sonarqube 容器正在运行。但我无法从 jenkins 容器中 ping sonarqube,我也不能卷曲
【参考方案1】:
在构建 sonarqube 容器时尝试使用--network jenkins
。
或者不使用--network参数,默认两个容器都使用bridge
模式
Jenkins 和 Sonarqube 应该是同一个网络。
然后尝试使用http://172.17.0.1:9000
或http://sonarqube:9000
如果http://localhost:9000
不起作用。
【讨论】:
谢谢。那是因为网络。非常感谢以上是关于Docker - Jenkins 无法访问 sonarqube(通过 localhost/127.0.0.1:9000)的主要内容,如果未能解决你的问题,请参考以下文章