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:9000http://sonarqube:9000 如果http://localhost:9000 不起作用。

【讨论】:

谢谢。那是因为网络。非常感谢

以上是关于Docker - Jenkins 无法访问 sonarqube(通过 localhost/127.0.0.1:9000)的主要内容,如果未能解决你的问题,请参考以下文章

从jenkins docker ecs容器中访问ecr图像

docker中Jenkins启动无法安装插件,版本过低

无法在 Docker 中部署的 Jenkins 中安装插件

在 Jenkins Pipeline 中访问本地运行的容器

无法让 Docker 在 Docker 之外与 ECS 中的 Jenkins 一起工作

Linux安装jenkins和通过docker容器安装jenkins