본문 바로가기

봄보라

Spring Boot 도커 배포를 위해 Gitlab CI/CD 이용하기

Spring Boot 로 개발된 프로그램을 자동으로 배포하는 방법을 소개한다

 

예전부터 많이 사용되던 젠키스를 이용하는 방법도 있지만 최근 프로젝트가 소스 관리를 위해 Gitlab 을 이용하므로

 

Gitlab 에서 제공하는 CI/CD 기능을 이용해봤다

 

배포는 Spring Boot 의 결과물을 jar 파일로 배포 후 실행하는게 아니라 도커로 묶어서 배포 실행한다

 

기본 프로젝트 파일 구조

 

Dockerfile

도커 설정 파일을 생성해야한다

해당 파일은 Spring Boot 로 개발된 결과물을 도커 파일로 만들 때 사용되는 설정이다

Spring Boot 는 자바 기반이므로 JDK 관련 설정과 컴파일된 jar 파일 복사, 마지막으로 jar 를 실행할 때 사용되는 명령이 포함된다

Dockerfile 내용

 

 

.gitlab-ci.yml

git 의 마스터 브랜치의 내용이 변경될 경우 설정된 CI/CD 가 실행되게끔 한다

개발된 Spring Boot 파일의 빌드, 테스트, 도커로 패키징, 서버로 배포 순서로 동작하게끔 설정하였다

Gitlab CI/CD

 

 

.gitlab-ci.yml 파일은 직접 생성해도 되지만 Gitlab 사이트에서 제공하는 에디터로 쉽게 작성할 수도 있다

 

Gitlab CI/CD

Gitlab 사이트에서 작성한 .gitlab-ci.yml 파일의 내용이다

7~16 은 Spring Boot + Gradle 로 개발된 파일을 빌드 후 생성된 jar 파일을 10분간 다른 스테이지와 공유하겠다는 내용이다

 

18~22 은 jUnit 으로 작성한 테스트 파일을 실행한다

 

24~37 은 빌드된 파일을 도커 파일로 배포하는 내용이다

도커 파일의 배포는 도커허브의 개인 계정에 배포되며 다음 스테이지인 deploy 에서 도커허브에 배포된 파일을 다운받아 서버에 실행시킨다

32번째의 $DOCKER_HUB_USER 와 $DOCKER_HUB_PW 는 도커허브 계정에 접속하기 위한 계정정보이며 별도로 설정 메뉴에서 작성한다

 

39~54 는 실제 운영서버에서 수행되는 내용이다

42번에 작성된 태그명과 동일한 이름의 Gitlab-runner 가 작성한 스크립트를 실행한다

 

환경 변수 설정

위의 Gitlab CI/CD 스크립트에 도커허브에 접속하기 위한 아이디와 비밀번호를 별도 환경변수에 저장한다고 하였다

아래는 GItlab 사이트 설정 메뉴에서 변수를 설정하는 방법이다

 

Gitlab CI/CD 설정파일

 

 

Gitlab-runner

마지막으로 실제 운영서버에 CI/CD 에서 설정한 스크립트를 실행하기 위한 Gitlab-runner를 설치해야 한다

Gitlab-runner

 

Gitlab-runner 를 관리하는 화면이다

GItlab 에서 제공하는 설치 매뉴얼을 보면 쉽게 설치할 수 있다

 

 

 

여기까지 최대한 간단히 작성한 Spring Boot 로 개발된 프로그램을 도커로 묶어서 운영서버에 배포/실행하는 방법을 정리하였다

 

참고 솔루션 : 봄즈 봄보라