[TIL] Jenkins, Docker Compose 배포환경에서 설정 문제로 인한 문제 및 해결

AlBan·2021년 10월 18일
0

TIL

목록 보기
6/6
post-thumbnail

들어가기에 앞서...

현재 진행하고 있는 프로젝트는 Spring boot로 구성되어 있는 웹서버 이며, Jenkins와 docker-compose를 통해 로컬 서버로 배포 및 실행되고 있다.

아직은 정식 서비스 전이라 여러가지 기능 추가 및 버그 수정, 테스트 등을 진행하고 있는데 좀 더 편한 배포환경을 위해 docker-compose로 바꾸고 나서 문제가 생기기 시작했다.

문제는

git에까지 반영된 코드가 배포 환경에서는 적용되지 않고 버그가 남아있는 이전코드가 실행되는 것

이다.

문제를 해결하는데 그렇게 긴 시간을 사용하지 않았지만, 시간이 지나 또 다시 docker-compose를 프로젝트에 사용하면서 생길 법한 문제이기 때문에 시도한 방법과 결과를 정리해두려 한다.

Git 로그 확인하기

가장 먼저 한것은 Git 로그를 확인한것이다.
나는 프로젝트 폴더를 fork해온 뒤 내 레포지토리에서 코드 수정 및 기능 구현을 하고 완료가 되면 pull request를 통해 프로젝트 레포지토리에 결과를 반영하는 형태로 프로젝트를 진행했다.

그래서, 혹시나 내가 pull request 또는 commit을 누락한게 있는지 먼저 확인했다. 하지만, 항상 더블 체크를 해왔기 때문에 누락된 부분은 없었다. 😧

Jenkins에서 가져오는 Git 소스의 commit id 확인하기

그렇다면 git에 반영된 소스를 jenkins에서 가져오는게 문제가 생기는 걸까??
이를 확인하기 위해 build log를 확인해보았다.
역시나 이 또한 문제가 아니였다. 긴 commit id가 토씨하나 틀리지 않고 똑같이 가져오며, 심지어 가져온 commit id로 강제 checkout까지 하는 로그를 출력하고 있었다

Gradle 빌드 및 캐시 확인

다음으로 확인한 것은 Gradle 관련된 사항들을 확인하였다.
프로젝트를 Gradle을 통해 빌드하고 있기 때문에 이전 빌드의 캐시가 남아있지 않을까? 라는 생각을 했다.

Gradle의 캐시를 이용하지 않고 빌드하는 옵션과 함께, 이전 빌드 결과물을 지우는 명령어를 사용하였다.
rm -rf ~/.gradle/cache, ./gradlw clean build --refresh-dependencies

위의 두 명령어를 통해 기존 gradle이 갖고있던 캐시와 이전 빌드 결과물을 지우고 실행을 해보았지만.
역시나 결과는 실패... 😭😭

docker-compose 실행 옵션 변경

문제 해결은 간단했다. docker-compose가 이전에 빌드했던 docker 이미지를 그대로 사용했기 때문에 반영되지 않았던 것.

docker-compose up -d --build

이렇게 --build를 up 명령어 뒤에 붙여준것 만으로 해결이 되버렸다... 🥲
추가한 명령어 하나만으로 지정한 Dockerfile을 이용해 docker-compose를 통해 실행시 마다 다시 빌드를 하게 되었고, 새롭게 빌드를 하기 때문에 변경사항은 항상 적용이 된것이다.

마치며

개발 프로젝트를 진행할때면 항상 느끼는 거지만 뭔가 엄청 거창한 문제는 없는것 같다.
대부분 사소한 부분에서 문제가 생기거나 사소한 명령어 하나로 고민했던 문제들이 해결되는 것이 종종 허탈할 때가 있다. 그렇지만 이런게 또 개발의 매력이라고 생각한다.
몇 날 며칠을 사소한 문제로 골머리 썩히다가도 문제를 해결했을 때의 성취감은 많은 개발자 분들이 느끼는 감정이고 이러한 매력때문에 개발에 빠지신 분들도 적지 않을 것이라 생각한다.

profile
[Spring, React를 공부하는 끈질긴 개발자 지망생] 잊어버리지 않도록! 정리 또 정리!

0개의 댓글