You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
7.6 KiB
7.6 KiB
로컬 Nexus 테스트 환경 구성 가이드
Docker를 사용하여 로컬에서 Nexus Repository Manager를 실행하고 테스트하는 가이드입니다.
사전 요구사항
- Docker Desktop (Windows/Mac) 또는 Docker Engine (Linux)
- Docker Compose
1단계: Docker Compose로 Nexus 실행
1-1. Nexus 및 MariaDB 시작
# Nexus와 MariaDB 동시 실행
docker-compose -f docker-compose-nexus.yml up -d
# 로그 확인
docker-compose -f docker-compose-nexus.yml logs -f nexus
1-2. Nexus 초기 비밀번호 확인
Nexus가 처음 시작될 때 임시 비밀번호가 생성됩니다 (~2-3분 소요):
# Windows (PowerShell)
docker exec nexus cat /nexus-data/admin.password
# Linux/Mac
docker exec nexus cat /nexus-data/admin.password
출력 예:
a4b7c2d9-e3f1-4a5b-8c6d-1e2f3a4b5c6d
2단계: Nexus 웹 접속 및 초기 설정
2-1. 웹 브라우저 접속
http://localhost:8081
2-2. 로그인
- Username:
admin - Password:
(1단계에서 확인한 임시 비밀번호)
2-3. 초기 설정 마법사
- 새 비밀번호 설정:
admin123(또는 원하는 비밀번호) - Anonymous Access:
Enable anonymous access선택 - Finish 클릭
3단계: Maven Repository 설정
3-1. Maven Central Proxy 확인
기본적으로 다음 Repository들이 생성되어 있습니다:
- maven-central: Maven Central Proxy
- maven-releases: Hosted Repository (Release)
- maven-snapshots: Hosted Repository (Snapshot)
- maven-public: Group Repository (위 3개 통합)
3-2. Repository 접근 확인
웹 UI에서:
- 좌측 메뉴 → Browse
- maven-public 선택
- 라이브러리 검색 테스트
4단계: 프로젝트 설정
4-1. gradle.properties 생성
# Nexus 로컬 설정
nexusUrl=http://localhost:8081
nexusUsername=admin
nexusPassword=admin123
# Repository URLs
nexusMavenPublic=${nexusUrl}/repository/maven-public/
4-2. build.gradle 수정
repositories {
maven {
url = "${nexusUrl}/repository/maven-public/"
credentials {
username = "${nexusUsername}"
password = "${nexusPassword}"
}
allowInsecureProtocol = true // HTTP 사용
}
}
4-3. settings.gradle 수정 (선택사항)
pluginManagement {
repositories {
maven {
url = "http://localhost:8081/repository/maven-public/"
credentials {
username = "admin"
password = "admin123"
}
allowInsecureProtocol = true
}
}
}
5단계: 빌드 테스트
# 캐시 정리
gradlew.bat clean
# 빌드 (의존성 다운로드)
gradlew.bat build --refresh-dependencies
첫 빌드 시 Nexus가 Maven Central에서 라이브러리를 다운로드하여 캐싱합니다.
6단계: Nexus에서 캐시 확인
6-1. 웹 UI에서 확인
- Browse → maven-central
- 다운로드된 라이브러리 확인 (예: org/springframework/boot/)
6-2. 캐시 통계 확인
- Administration → System → Nodes
- Blob Stores 크기 확인
7단계: 내부 라이브러리 배포 (선택사항)
7-1. build.gradle에 배포 설정 추가
publishing {
publications {
maven(MavenPublication) {
from components.java
groupId = 'com.example'
artifactId = 'springbatch-test'
version = '1.0.0'
}
}
repositories {
maven {
name = 'nexus'
url = "${nexusUrl}/repository/maven-releases/"
credentials {
username = "${nexusUsername}"
password = "${nexusPassword}"
}
allowInsecureProtocol = true
}
}
}
7-2. 배포 실행
gradlew.bat publish
7-3. Nexus에서 확인
Browse → maven-releases → com/example/springbatch-test
Docker 명령어 모음
Nexus 관리
# 시작
docker-compose -f docker-compose-nexus.yml up -d
# 중지
docker-compose -f docker-compose-nexus.yml stop
# 재시작
docker-compose -f docker-compose-nexus.yml restart nexus
# 로그 확인
docker-compose -f docker-compose-nexus.yml logs -f nexus
# 완전 삭제 (데이터 포함)
docker-compose -f docker-compose-nexus.yml down -v
MariaDB 관리
# MariaDB 접속
docker exec -it batch-mariadb mysql -u batch_user -p
# 데이터베이스 확인
docker exec batch-mariadb mysql -u batch_user -pbatch_password -e "SHOW DATABASES;"
테스트 시나리오
시나리오 1: 의존성 다운로드 캐싱
- 프로젝트 처음 빌드
- Nexus 웹에서 maven-central 확인
- 캐시된 라이브러리 확인
- 두 번째 빌드 시 속도 향상 확인
시나리오 2: 폐쇄망 시뮬레이션
- 첫 번째 빌드로 의존성 캐싱
- 인터넷 연결 끊기 (Wi-Fi OFF)
- 프로젝트 clean
- 다시 빌드 → Nexus 캐시로 성공해야 함
시나리오 3: 내부 라이브러리 배포
- 프로젝트 빌드
- Nexus에 배포
- 다른 프로젝트에서 의존성 추가
- 정상 다운로드 확인
리소스 사용량
기본 메모리 할당
- Nexus: 2GB (1GB heap + 2GB direct memory)
- MariaDB: 256MB
메모리 증가 (필요시)
docker-compose-nexus.yml 수정:
environment:
- INSTALL4J_ADD_VM_PARAMS=-Xms2g -Xmx2g -XX:MaxDirectMemorySize=4g
트러블슈팅
Nexus 시작 안 됨
# 로그 확인
docker logs nexus
# 포트 충돌 확인
netstat -ano | findstr :8081
# 재시작
docker-compose -f docker-compose-nexus.yml restart nexus
비밀번호 초기화
# 컨테이너 중지
docker-compose -f docker-compose-nexus.yml stop nexus
# 데이터 볼륨 삭제 (모든 데이터 손실!)
docker volume rm springbatch-test_nexus-data
# 재시작
docker-compose -f docker-compose-nexus.yml up -d nexus
빌드 실패
# Gradle 캐시 정리
gradlew.bat clean --no-daemon
rm -rf %USERPROFILE%\.gradle\caches
# 의존성 새로고침
gradlew.bat build --refresh-dependencies
Nexus 고급 설정
1. Gradle Plugin Portal Proxy
Administration → Repository → Repositories → Create repository
- Type:
maven2 (proxy) - Name:
gradle-plugins - Remote storage:
https://plugins.gradle.org/m2/
2. 디스크 Cleanup
Administration → Tasks → Create task
- Type:
Admin - Compact blob store - Blob store:
default - Schedule: Daily
3. 익명 접근 비활성화
Administration → Security → Anonymous Access
Allow anonymous users to access the server체크 해제
프로덕션 환경으로 마이그레이션
로컬 테스트 완료 후 실제 Nexus 서버로 전환:
gradle.properties 수정
# 로컬 Nexus (개발/테스트)
# nexusUrl=http://localhost:8081
# 실제 Nexus (프로덕션)
nexusUrl=http://nexus.company.com:8081
nexusUsername=your-username
nexusPassword=your-password
HTTPS 사용
maven {
url = "https://nexus.company.com/repository/maven-public/"
credentials {
username = "${nexusUsername}"
password = "${nexusPassword}"
}
// allowInsecureProtocol = false (기본값)
}
참고 자료
다음 단계
- Docker로 Nexus 실행
- Nexus 웹 UI 접속 및 초기 설정
- 프로젝트 빌드 테스트
- 의존성 캐싱 확인
- 내부 라이브러리 배포 테스트
- 실제 Nexus 서버로 마이그레이션