프로젝트/서버관리

ubuntu에 도커와 젠킨스로 ci cd 구축하기(2편)

쿠키담임선생님 2024. 1. 8. 21:23

이제 도커환경에서 젠킨스를 설치해야한다.

 

무슨 뜻이냐면 도커명령어를 사용해서 이미지화 된 젠킨스를 설치해야 한다는 뜻이다.

 

지금 과정까지 따라왔다면 "특정 IP":8080 뒤 api를 호출하면 내 프로젝트의 api가 실행 되고 리턴값을 주는 것을 확인 할 수 있었을 것이다.

 

내 프로젝트가 이미지화 되어 우분투 docker환경에서 pull 받은 것 처럼

 

누군가 젠킨스를 이미지화 해서 docker환경에 올려둔 것을 내려받아야한다.

 

내려받는 명령어는 다음과 같다.

 

 

젠킨스 이미지 다운로드

$sudo docker pull jenkins/jenkins:lts

 

관리자 권한이 필요함으로 꼭 sudo 로 권한을 주어야 한다.

 

 

이렇게 출력되면 젠킨스가 설치가 잘 된 것이다.

 

이제 젠킨스 컨테이너를 띄우는 명령어이다.

 

 

젠킨스  컨테이너를  실행 명령어

$ sudo docker run -d -p 8080:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts

 

 

그런데 이때 주의해야할 점이 있다.

 

8080:8080 이 부분이다.

포트번호는 내 프로젝트가 이미 8080 포트를 사용하고 있는데 이렇게 되면 포트 번호가 젠킨스와 겹쳐버린다.

 

그래서 젠킨스는 9090 포트를 사용하게 바꾸고 싶다.

그럼 아래의 명령어를 실행하면 된다.

 

$ sudo docker run -d -p 9090:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts

 

이 명령어는 호스트의 9090 포트와 컨테이너의 8080 포트를 연결한다. 이렇게 설정하면 Jenkins는 여전히 컨테이너 내부에서 8080 포트를 사용하지만, 외부에서는 http://<Docker 호스트의 IP 또는 도메인>:9090 주소를 통해 접근할 수 있게 된다.

 

 

해당 명령어를 입력한 후 

 

sudo docker images로 확인해보니 현재 돌고 있는 컨테이너들을 확인 할 수 있다.

 

문제가 발생했다.

 

ip주소:9090을 주소창에 입력했지만 젠킨스 페이지가 노출되지 않는다...

 

sudo docker ps - a 명령어를 통해 현재 젠킨스가 실행되고 있는지 확인 해보았지만 현재 STATUS를 확인해보니 실행중이다.

 

만약 실행중이 아니라면 아래처럼 Exited가 나와야한다.

 

무슨 문제인지 분석중...

 

분석 완료.

 

일단 aws설정으로 들어가서 인바운드 규칙을 편집해주어야한다. 나는 8080포트만 접속을 열어둬서 9090을 받아드리지 못한 현상이였다.

 

결국 8080포트가 아닌 다른 포트로 젠킨스를 접속하기 위해선 아래 사진을 참고하면 된다.

 

 

위 사진처럼 인바운드 규칙만 편집한것 뿐 아니라 우분투 서버에서도 설정해주었다.

 

 

이 사진을 보면 사용한 명령어는 다음과 같다.

 

sudo ufw allow 9090

sudo ufw allow OpenSSH

sudo ufw enable

 

이렇게 3가지로 9090포트에 방화벽을 해제했었다.

중간중간 sudo ufw status를 사용한 부분은 현재 방화벽 상태를 확인하기 위함이다.

 

 

 

 

 

현재 게시글에서는 지나가버렸지만 다른 블로그를 참고하면 젠킨스 설치 비밀번호를 확인하는 명령어가 있다.

 

다른 블로그들을 참고해서 젠킨스 설치 비밀번호를 입력하면 아래 페이지로 넘어간다.

 

 

이 창으로 넘어간다. 여기서 Install suggested plugins를 클릭한다.

 

 

 

그럼 이렇게 뭐가 많이 설치가 되는 것을 확인 할 수 있다.

 

다 설치가 되었으면 이제 회원가입을 완료하고

 

그 뒤 왼쪽 대시보드에서 Jenkins관리 -> Script Console을 클릭한다.

 

여기서 한국 시간을 설정해주는 스크립트를 추가해준다.

 

System.setProperty('org.apache.commons.jelly.tags.fmt.timeZone', 'Asia/Seoul')

 

 

그럼 이제 도커로 젠킨스 설치와 젠킨스 설정은 끝났다.

 

다음 시간에는 이제 젠킨스에 프로젝트 자동배포를 만들어 보겠다.

 

https://blog.kubwa.co.kr/jenkins-%EB%A1%9C-%EB%8F%84%EC%BB%A4-%EC%9D%B4%EB%AF%B8%EC%A7%80-build-push-%EC%9E%90%EB%8F%99%ED%99%94%ED%95%98%EA%B8%B0-dc7126299b48

 

Jenkins 로 도커 이미지 Build & Push 자동화하기

Kubeflow에는 kfp라는 Python SDK가 존재하며 이를 통해 도커 이미지 없이 ML pipeline을 구축할 수 있다. 하지만 딥러닝을 수행할 경우 코드 길이가 길어져 kfp로 코드 작성 및 수정이 어려워지고 큰 데이

blog.kubwa.co.kr

 

해당 글 참고할 예정