요즘은 도커가 많이 활성화 되어서 각종 환경 구성이 용이하다.
오늘 설치할 소나큐브는 정적분석 도구로서 소스코드 취약점을 분석해 주는 오픈소스이다.
(공식사이트: https://www.sonarqube.org/)

  • 소나큐브는 내부적으로 데이터베이스를 활용하며 오늘 가이드에서는 postgre를 이용해 설치한다.
  • docker를 이용해 구성하기에는 cli 명령어를 2번 써야 하므로 docker-compose를 활용해 sonarqube를 설치한다.

(설치 순서 & 제약사항)

  • AWS EC2에 docker-compose를 먼저 설치한다.
  • 이후 docker-compose.yml 파일을 이용해 sonarqube를 구동한다. (docker는 미리 설치되어 있다고 가정)
  • sonar rule 세팅은 하지 않는다.
  • default ID/Password는 admin/admin123 이다.

1.Docker-compose 설치

아래 명령어로 docker-compose를 설치한다.

    sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    sudo chmod +x /usr/local/bin/docker-compose

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

    #확인
    docker-compose --version

2. docker-compose.yml 설정

docker-compose는 yml 파일 형식을 기반으로 구동된다.
아래와 같이 docker-compose.yml 파일을 작성한다.

version: "2"

services:
  sonarqube:
    image: sonarqube:lts
    container_name: sonarqube
    ports:
      - "9000:9000"
    ulimits:
      nofile:
        soft: "262144"
        hard: "262144"
    networks:
      - sonarnet
    environment:
      - sonar.jdbc.url=jdbc:postgresql://db:5432/sonar
    volumes:
      - sonarqube_conf:/opt/sonarqube/conf
      - sonarqube_data:/opt/sonarqube/data
      - sonarqube_extensions:/opt/sonarqube/extensions
      - sonarqube_logs:/opt/sonarqube/logs

  db:
    image: postgres
    container_name: postgres_sonar
    ports:
      - "5432:5432"
    networks:
      - sonarnet
    environment:
      - POSTGRES_USER=sonar
      - POSTGRES_PASSWORD=sonar
    volumes:
      - postgresql:/var/lib/postgresql
      - postgresql_data:/var/lib/postgresql/data

networks:
  sonarnet:
    driver: bridge

volumes:
  sonarqube_conf:
  sonarqube_data:
  sonarqube_extensions:
  sonarqube_logs:
  postgresql:
  postgresql_data:
  • sonarqube와 db라는 서비스 (도커 컨테이너)로 구성되고 이들간은 bridge모드로 네트워크를 서로 연결한다. (db:5432/sonar 로 요청가능한 이유가 이것임)

  • ulimits 이하 부분이 없으면 기동시에max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 등과 같은 오류가 발생할 수 있다.

    • (호스트 서버) root로 해당 파일을 오픈한다.
      (당장 적용은 CLI에서 sudo sysctl -w vm.max_map_count=262144 )

        vi /etc/sysctl.conf
      
        # 아래 내용 추가
        vm.max_map_count=262144
    • (docker-compose.yml) 아래 내용 추가

            ulimits:
              nofile:
                soft: "262144"
                hard: "262144"
  • AWS EC2위에서 셋업했으므로 Security Group에서 9000 포트를오픈한다.
    (DB 접속 필요시 5432 포트도 오픈)

아래 명령어로 sonarqube를 실행한다.

docker-compose up -d
  • up : 기동
  • -d : 데몬 옵션 (백그라운드 실행)

'CICD > sonarqube' 카테고리의 다른 글

AWS EC2에서 Sonarqube (Docker-compose) 서비스로 등록  (0) 2019.12.20

+ Recent posts