-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdocker-compose.sonar.yml
More file actions
99 lines (93 loc) · 2.88 KB
/
Copy pathdocker-compose.sonar.yml
File metadata and controls
99 lines (93 loc) · 2.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
version: '3.8'
# ====================================================
# SonarQube 로컬 분석 환경
# ====================================================
# 사용법:
# 1. 처음 시작: docker compose -f docker-compose.sonar.yml up -d
# 2. UI 접속: http://localhost:9000 (admin/admin 로그인 후 비밀번호 변경)
# 3. 프로젝트 토큰 발급 후 .env에 SONAR_TOKEN 설정
# 4. make sonar-scan 실행
#
# 주의: SonarQube는 메모리를 많이 사용합니다 (3-4GB)
# 분석 시에만 실행하고 평소엔 down 권장
# make sonar-up / make sonar-down 으로 관리
services:
sonarqube:
image: sonarqube:community
container_name: mindlog-sonarqube
depends_on:
sonar-db:
condition: service_healthy
environment:
SONAR_JDBC_URL: jdbc:postgresql://sonar-db:5432/sonarqube
SONAR_JDBC_USERNAME: sonar
SONAR_JDBC_PASSWORD: sonar_password
# ES 메모리 설정 (부족 시 실패)
SONAR_ES_BOOTSTRAP_CHECKS_DISABLE: "true"
volumes:
- sonarqube_data:/opt/sonarqube/data
- sonarqube_extensions:/opt/sonarqube/extensions
- sonarqube_logs:/opt/sonarqube/logs
ports:
- "9000:9000"
ulimits:
nofile:
soft: 65536
hard: 65536
networks:
- sonar-network
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9000/api/system/status | grep -q 'UP' || exit 1"]
interval: 30s
timeout: 10s
retries: 10
start_period: 120s
sonar-db:
image: postgres:15-alpine
container_name: mindlog-sonar-db
environment:
POSTGRES_DB: sonarqube
POSTGRES_USER: sonar
POSTGRES_PASSWORD: sonar_password
volumes:
- sonar_db_data:/var/lib/postgresql/data
networks:
- sonar-network
healthcheck:
test: ["CMD-SHELL", "pg_isready -U sonar -d sonarqube"]
interval: 10s
timeout: 5s
retries: 5
sonar-scanner:
image: sonarsource/sonar-scanner-cli:latest
container_name: mindlog-sonar-scanner
profiles:
- scan # make sonar-scan 시에만 실행
environment:
SONAR_HOST_URL: http://sonarqube:9000
# .env 파일에서 SONAR_TOKEN 주입
SONAR_TOKEN: ${SONAR_TOKEN:-}
volumes:
# 소스 코드 마운트 (읽기 전용)
- ./app:/usr/src/app:ro
- ./tests:/usr/src/tests:ro
- ./sonar-project.properties:/usr/src/sonar-project.properties:ro
# SonarQube 캐시 (재분석 속도 향상)
- sonar_scanner_cache:/opt/sonar-scanner/.sonar/cache
# 커버리지 리포트 (pytest-cov 결과물)
- ./coverage.xml:/usr/src/coverage.xml:ro
working_dir: /usr/src
networks:
- sonar-network
depends_on:
sonarqube:
condition: service_healthy
volumes:
sonarqube_data:
sonarqube_extensions:
sonarqube_logs:
sonar_db_data:
sonar_scanner_cache:
networks:
sonar-network:
driver: bridge