docker-compose方式部署sonarqube+postgresql


背景

靜態代碼檢測作為devops不可缺失的一部分,然后就部署了。。。

軟件版本介紹

CentOs:7.6.1810
docker-compose version 1.26.0
sonarqube:7.9.2
postgresql:12.3

環境准備

因為sonarqube采用elasticsearch作為檢索后台服務,因此需要對服務器做一下設置:

# 臨時生效
sysctl -w vm.max_map_count=262144
sysctl -w fs.file-max=65536
ulimit -n 65536
ulimit -u 4096

# 重啟生效
echo "sonar   -   nofile   65536
sonar   -   nproc    4096" > /etc/security/limits.d/99-sonarqube.conf
echo "vm.max_map_count=262144
fs.file-max=65536" > /etc/sysctl.d/99-sonarqube.conf
# 創建容器映射路徑
mkdir -p /home/sonar/postgres/{postgresql,data}
mkdir -p  /home/sonar/sonarqube/{extensions,logs,data,conf}
chmod -R 777 /home/sonar/*  # 啟動容器映射路徑權限問題
# 拉取docker 鏡像,拉取鏡像較慢,可以使用阿里雲鏡像站或者清華大學鏡像站。
docker pull postgres:12.3
docker pull sonarqube:7.9.2-community
# 編輯docker-compose.yml文件
version: '3'
services:
  postgres:
    image: postgres:12.3
    restart: always
    container_name: postgres
    ports:
      - 5432:5432
    volumes:
      - /home/sonar/postgres/postgresql:/var/lib/postgresql
      - /home/sonar/postgres/data:/var/lib/postgresql/data
      - /etc/localtime:/etc/localtime:ro
    environment:
      TZ: Asia/Shanghai
      POSTGRES_USER: sonar
      POSTGRES_PASSWORD: sonar
      POSTGRES_DB: sonar

  sonar:
    image: sonarqube:7.9.2-community
    container_name: sonar
    depends_on:
      - postgres
    volumes:
      - /home/sonar/sonarqube/extensions:/opt/sonarqube/extensions
      - /home/sonar/sonarqube/logs:/opt/sonarqube/logs
      - /home/sonar/sonarqube/data:/opt/sonarqube/data
      - /home/sonar/sonarqube/conf:/opt/sonarqube/conf
      # 設置與宿主機時間同步
      - /etc/localtime:/etc/localtime:ro
    ports:
      - 59000:9000
    command:
      # 內存設置
      - -Dsonar.ce.javaOpts=-Xmx2048m
      - -Dsonar.web.javaOpts=-Xmx2048m
      # 設置服務代理路徑
      - -Dsonar.web.context=/
      # 此設置用於集成gitlab時,回調地址設置
      - -Dsonar.core.serverBaseURL=https://sonarqube.example.com
    environment:
      TZ: Asia/Shanghai
      SONARQUBE_JDBC_USERNAME: sonar
      SONARQUBE_JDBC_PASSWORD: sonar
      SONARQUBE_JDBC_URL: jdbc:postgresql://postgres:5432/sonar

服務部署

# -d 服務后台運行
docker-compose up -d

Gitlab SSO集成

在gitlab創建一個application,設置回調:http://sonarqube.example.com/oauth2/callback/gitlab

點擊submit
將生成的id和key添加到sonarqube服務端

sonarqube 安裝gitlab插件,然后進入配置界面選擇gitlab填寫application信息

測試:
退出管理員賬號
使用gitlab賬號登錄驗證。

問題記錄


報錯日志

# gitlab 日志記錄信息
==> /var/log/gitlab/gitlab-rails/production_json.log <==
{"method":"GET","path":"/oauth/authorize","format":"html","controller":"Oauth::AuthorizationsController","action":"new","status":200,"duration":41.43,"view":31.53,"db":1.68,"time":"2020-06-30T03:12:02.007Z","params":{"client_id":"111ec3cf0df6fe4dff13efbac6c293461a255658ff92a5ee1beed0c5b859843a","redirect_uri":"http://localhost:9000/oauth2/callback/gitlab","response_type":"code","scope":"read_user"},"remote_ip":null,"user_id":null,"username":null}

解決辦法

注意: sonarqube gitlab插件配置處的說明,第二處:

Authentication

In order to enable GitLab authentication:

  • SonarQube must be publicly accessible through HTTPS only
  • The property 'sonar.core.serverBaseURL' must be set to this public HTTPS URL
  • In your GitLab profile, you need to create a Developer Application for which the 'Authorization callback URL' must be set to '<value_of_sonar.core.serverBaseURL_property>/oauth2/callback/gitlab'.
      # sonaqube啟動名利添加,回調地址設置
      - -Dsonar.core.serverBaseURL=https://sonarqube.example.com


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM