본문으로 바로가기

GitLab & Jenkins CI/CI 쉽게 구축하기(2)

category 나의 주니어 개발 일기/CICD 2023. 2. 2. 10:07
728x90
반응형
SMALL

https://pulpul8282.tistory.com/288

 

GitLab & Jenkins CI/CI 쉽게 구축하기(1)

GitLab & Jenkins CI/CD 구축하기 1. 2가지의 Credential 등록 우리는 2가지의 Credential 을 등록한다. 첫째, Gitlab Api token 등록 둘째, Username with password 등록 1. 본인 빌드 환경에 맞는 JDK와 gradle 또는 maven 버전

pulpul8282.tistory.com

이전의 포스팅 에서는 단순히 도커 젠킨스에 빌드 파일을 생성하는 것이였지만.

지금 할 포스팅은 생성된 빌드 파일을 이미지화 하여 도커 컨테이너로 띄우는 것까지 하겠다.

1. 자신의 프로젝트의 모듈별 Dockerfile 생성

모듈별로 Dockerfile을 갖고있다.

 

applications-app-http-db 모듈의 도커파일 예제

**Dockerfile**

FROM openjdk:17-jdk

# JAR_FILE 변수 정의 -> 기본적으로 jar file이 2개이기 때문에 이름을 특정해야함
ARG JAR_FILE1=applications/app-http-db/build/libs/app-http-db-1.0.jar

# JAR 파일 메인 디렉토리에 복사
COPY ${JAR_FILE1} http-to-db.jar

EXPOSE 8180
EXPOSE 9191

# 시스템 진입점 정의
ENTRYPOINT ["java","-jar","http-to-db.jar"]

1.자신의 모듈이 build 되는 위치 지정

ARG JAR_FILE1=applications/app-http-db/build/libs/app-http-db-1.0.jar

2.도커에서 빌드시 사용될 모듈 이름 지정

COPY ${JAR_FILE1} http-to-db.jar

3.자신이 사용중인 포트 지정

EXPOSE 8180 EXPOSE 9191

4.모듈 실행 명령어 입력, `http-to-db.jar` 이름은 2번에서 지정한 이름과 같아야 한다.

ENTRYPOINT ["java","-jar","http-to-db.jar"]

여기까지 끝났다면 GITLAB에 PUSH - MERGE 하자

2. 젠킨스 설정

Dashboard - 자신의 작업공간 - Configuration -Build Steps

Add build step 클릭 - Execute shell 생성

2-1. Execute shell 생성

쉘 적용후 Apply - 저장

**Execute shell**

#도커 이미지 파일로 빌드
docker build -f applications/app-http-db/Dockerfile -t yoonjuyoung/http-to-db:1.0 .
#기존에 도커 컨테이너로 실행되고 있는 프로세스 종료, 삭제, 제거
docker ps -q --filter "name=http-to-db" | grep -q . && docker stop http-to-db && docker rm http-to-db | true
#새롭게 빌드한 도커 이미지 파일 실행
docker run -d --name=http-to-db -P yoonjuyoung/http-to-db:1.0
#도커 이미지들 중 사용되지 않는 불필요한 이미지 삭제
docker rmi -f $(docker images -f "dangling=true" -q) || true

2-2. 젠킨스에서 다시 빌드

지금빌드 - 계획된 빌드

2-3. 도커에서 확인

도커에서 실행중인 컨테이너 확인 명령어

docker ps

2-4. 만약에 2-2 젠킨스에서 실패했을 경우

현재 쉘은 도커 컨테이너가 실행중이라는 가정하에 작성되었기 때문에 초반에 빌드하여 배포하였을경우

당연히 실행중인 컨테이너는 없기 때문에 쉘 명령어가 실패되는것이다.

그러나

우리가 빌드한 이미지는 도커에 남아 있을것이다.

**2-4-1.도커 이미지 확인**

docker images

우리가 만든 `yoonjuyoung/http-to-db:1.0` 의 이미지가 확인된다.

2-4-2.이미지 수동실행

확인됬으면 이미지를 수동으로 실행시켜주자.

docker run -d --name=http-to-db -P yoonjuyoung/http-to-db:1.0

-d: 백그라운드 실행

-name: 도커에서 실행될 컨테이너 이름

-P: Dockerfile에서 EXPOSE로 선언한 port들을 자동으로 매핑시켜줌

3.도커에서 재확인

docker ps

`확인이 되면 다시한번 젠킨스에서 계획된 빌드 눌러 초록색 불이 켜지는지 확인하자`

 

 

 

 

 

 

 

 

 

 

참고 래퍼런스

https://velog.io/@hind_sight/Docker-Jenkins-%EB%8F%84%EC%BB%A4%EC%99%80-%EC%A0%A0%ED%82%A8%EC%8A%A4%EB%A5%BC-%ED%99%9C%EC%9A%A9%ED%95%9C-Spring-Boot-CICD

https://ttl-blog.tistory.com/761

 

728x90
반응형
LIST

'나의 주니어 개발 일기 > CICD' 카테고리의 다른 글

GitLab & Jenkins CI/CI 쉽게 구축하기(1)  (0) 2023.01.20