이 문서는 SonarQube를 Docker 컨테이너로 설치하는 가이드를 공유하기 위해 작성되었습니다.
SonarQube 2025.1 LTA Developer Edition 버전 기준으로 작성되었습니다. |
Docker 버전 - 20.10 이상
Docker Compose 버전 - 2.15.0 이상
Docker 최신 버전을 설치하여 Built-in 된 Compose 버전 사용을 권장합니다.
리눅스 환경에서 SonarQube 를 설치하기 전에 다음 사항 확인 및 필요시 설정이 필요합니다.
열린 파일 디스크립터(fs.file-max)의 최대 수는 131072보다 크거나 같아야합니다.
SonarQube 서버를 실행하는 사용자는 최소 131072 개의 파일 디스크립터(file descriptors)를 열 수 있습니다.
SonarQube 서버를 실행하는 사용자는 최소 8192개의 스레드(threads)를 열 수 있습니다.
Docker Container를 시스템(root) 계정으로 실행한다고 가정하고, 시스템(root) 계정 기준으로 설명 |
1. 다음 명령어로 현 OS - root 계정의 설정을 확인 할 수 있습니다.
$> sysctl vm.max_map_count $> sysctl fs.file-max $> ulimit -n $> ulimit -u |
2. 값이 위 조건에 해당하지 않는다면 다음 명령어로 값을 변경할 수 있습니다.
위 조건보다 작은 값만 변경하는 것을 권장합니다. |
$> sysctl -w vm.max_map_count=524288 $> sysctl -w fs.file-max=131072 $> ulimit -n 131072 $> ulimit -u 8192 |
3. 위 명령어는 현재 로그인된 세션에만 적용되므로, 영구적으로 적용하기 위해서는 다음과 같은 설정이 필요합니다.
각 경로의 파일에서 다음과 같이 내용 추가 또는 수정합니다.
/etc/sysctl.conf
vm.max_map_count=524288 fs.file-max=131072 |
/etc/security/limits.conf
root - nofile 131072 root - nproc 8192 |
Docker Compose yaml을 사용하여 SonarQube와 PostgreSQL을 동시에 설치하고 관리하는 방법에 대한 가이드를 제공합니다. |
특정 경로에 다음의 YAML 파일을 준비합니다.
docker-compose.yaml 예시
services: sonarqube: image: sonarqube:2025-lta-developer # SonarQube 버전 지정 hostname: sonarqube container_name: sonarqube depends_on: db: condition: service_healthy environment: SONAR_JDBC_URL: jdbc:postgresql://db:5432/sonar SONAR_JDBC_USERNAME: sonar SONAR_JDBC_PASSWORD: sonar # 선택사항(각 엔진별 Heap 사이즈 설정) SONAR_WEB_JAVAOPTS: "-Xms1024m -Xmx1024m" SONAR_CE_JAVAOPTS: "-Xms1024m -Xmx1024m" SONAR_SEARCH_JAVAOPTS: "-Xms1024m -Xmx1024m" volumes: # VM의 데이터영역 지정 - sonarqube_data:/opt/sonarqube/data - sonarqube_extensions:/opt/sonarqube/extensions - sonarqube_logs:/opt/sonarqube/logs - sonarqube_temp:/opt/sonarqube/temp ports: - "9000:9000" networks: # 선택사항 - ${NETWORK_TYPE:-ipv4} restart: always db: image: postgres:15 healthcheck: test: ["CMD-SHELL", "pg_isready"] interval: 10s timeout: 5s retries: 5 hostname: postgresql container_name: postgresql environment: POSTGRES_USER: sonar POSTGRES_PASSWORD: sonar POSTGRES_DB: sonar volumes: - postgresql:/var/lib/postgresql - postgresql_data:/var/lib/postgresql/data networks: # 선택사항 - ${NETWORK_TYPE:-ipv4} restart: always volumes: sonarqube_data: sonarqube_temp: sonarqube_extensions: sonarqube_logs: postgresql: postgresql_data: # 위 networks 속성을 사용하지 않을 경우 아래 설정 불필요 networks: ipv4: driver: bridge enable_ipv6: false dual: driver: bridge enable_ipv6: true ipam: config: - subnet: "192.168.2.0/24" gateway: "192.168.2.1" - subnet: "2001:db8:2::/64" gateway: "2001:db8:2::1" |
1. 특정 버전의 SonarQube 및 PostgreSQL 설치 시, 아래 링크를 통해 다운로드를 받을 수 있습니다.
2. 상위 Docker compose yaml에서 image: sonarqube:2025-lta-developer, image: postgres:15 부분에 해당 버전으로 수정이 필요합니다.
sonarqube: // image: sonarqube:latest // image: sonarqube:2025-lta-enterprise image: sonarqube:2025-lta-developer |
docker-compose.yaml 파일이 위치한 경로에서 다음 명령어를 수행합니다.
# docker-compose.yaml 기반으로 컨테이너 실행 $> docker compose up -d # 컨테이너 확인 $> docker ps |
브라우저에서 다음과 같이 설정한 IP:포트로 접속하여 초기 Setup을 수행합니다.
운영 시스템의 경우 앞단에 Nginx 등을 구성하여 Reverse Proxy 구성으로 SSL 도메인을 사용하는 것을 권장합니다. |