Nexus 프로젝트 Docker 수동 배포 가이드
등록일: 2026-04-26
내용: 본 문서는 로컬 환경에서 빌드된 Docker 이미지를 GitHub Container Registry(GHCR)를 통해 운영 서버에 배포하는 전 과정을 정리함.
1. 사전 준비 (GitHub Token 발급)
GitHub Packages(GHCR)에 접근하기 위해서는 별도의 개인 액세스 토큰(PAT)이 필요함.
- 발급 경로: Settings > Developer settings > Personal access tokens > Tokens (classic)
- 권한(Scopes):
write:packages,read:packages(repo 권한은 필요 시 선택) - 주의 사항: 토큰은 생성 시 1회만 노출되므로 반드시 별도 보관함.
2. 로컬 환경 작업 (Build & Push)
로컬 PC에서 이미지를 생성하고 깃허브 창고로 업로드하는 단계임.
2.1 GHCR 로그인
# Git Bash 등 터미널에서 실행
echo "발급받은_토큰_문자열" | docker login ghcr.io -u sleepzzzzz --password-stdin
2.2 이미지 태그 변경 (Alias 생성)
로컬에서 테스트용으로 빌드한 이미지를 GHCR 규격에 맞는 이름으로 별칭을 부여함.
# docker tag [기존이미지]:[태그] [GHCR주소]/[아이디]/[이미지명]:[새태그]
docker tag nexus-system:docker-local ghcr.io/sleepzzzzz/nexus-system:latest
2.3 이미지 푸시 (Upload)
생성된 이름표를 기반으로 깃허브 서버로 전송함.
docker push ghcr.io/sleepzzzzz/nexus-system:latest
3. 운영 서버 작업 (Pull & Run)
N100 홈 서버(Ubuntu) 등 실제 서비스 환경에서 이미지를 구동하는 단계임.
3.1 기존 컨테이너 중지 및 삭제 (재배포 시)
동일한 이름의 컨테이너가 이미 실행 중이라면 먼저 정리함.
docker stop nexus-system
docker rm nexus-system
3.2 서버 GHCR 로그인
로컬에서와 동일하게 토큰을 사용하여 로그인함.
echo "발급받은_토큰_문자열" | docker login ghcr.io -u sleepzz --password-stdin
3.3 최신 이미지 다운로드 (Pull)
창고에 올라온 따끈따끈한 최신 이미지를 내려받음.
docker pull ghcr.io/sleepzzzzz/nexus-system:latest
3.4 컨테이너 실행 (Run)
운영 프로필(prod)과 시크릿 파일 경로를 연결하여 실행함.
docker run -d --name nexus-system \
-p 8001:8001 \
-e SPRING_PROFILES_ACTIVE=prod \
-v "/sorc001/nexus/secrets:/app/secrets" \
ghcr.io/sleepzzzzz/nexus-system:latest
4. 모니터링 및 검증
4.1 로그 확인
어플리케이션이 정상적으로 구동되는지 실시간 로그를 확인함.
docker logs -f nexus-system
- 로그상에
The following 1 profile is active: "prod"문구 확인 필요.
4.2 컨테이너 상태 확인
docker ps -a
- STATUS가
Up상태인지, 포트 포워딩이8001->8001로 잘 잡혔는지 확인함.
5. 보안 및 팁
- 로그아웃: 공용 서버이거나 보안이 중요하다면 작업 후
docker logout ghcr.io를 수행하여 토큰 정보를 삭제함. - 이미지 정리: 불필요하게 쌓인 옛날 이미지들은
docker image prune으로 정리하여 디스크 용량을 확보함.