[Jenkins] SSH+Docker가 설치되어있는 VM사용하기

2023. 8. 19. 11:50초기 과업/DevSecOps

작성자알 수 없는 사용자

728x90
반응형

 

안녕하세요. 기깔나는 사람들에서 DMSO를 맡고있는 정우입니다.

지난번 Jenkins를 이용해서 여러 프로젝트를 만들어 보았습니다.

 

1. [Jenkins] Jenkins 설치 및 새로운 프로젝트 생성

2. [Jenkins] Jenkins를 이용한 CI/CD 자동화 도구의 사용

3. [Jenkins]PollSCM을 통한 지속적인 파일 업데이트+ SSH연결

 

 

ssh연결까지 완료가 되었으면 새로운 서버에 배포하는 작업을 해볼게요.

 

 


Jenkins 내부에서 ssh 설정해주기

1. ssh 관련 plugin을 설치해볼게요.

Dashboard > Jenkins관리 > Plugins

 

Publish Over SSH가 설치되어있지 않다면 install해주세요

 

2. 시스템 설정을 변경해보겠습니다.

Dashboard > Jenkins관리 > System 으로 들어가면

Publish over SSH 칸이 생성된게 보입니다.

 

 

SSH Server를 추가하러 가보겠습니다.

더보기

- 추가하기전 저번시간에 컨테이너를 docker-server로 지정해줬기 때문에 잘 기동중인지 확인해보겠습니다.

ssh 를 이용해서 설치한 ssh 로 들어가보겠습니다.

ssh root@localhost -p 10022

 

- Name : docker-server

- Hostname : 서버 IP Address (Localhost는 안됩니다!!)

ifconfig로 실제 내 서버의 포트를 확인해보겠습니다.

 

Username : root

Remote Directory : . 

고급 으로 들어가서 Password를 지정해주겠습니다.

 

Password ▼

더보기

P@ssw0rd

 

포트번호도 다시 설정해줄게요

 

연결이 잘 되어있는지 확인해보겠습니다. 

 

 

도커가 실행되어있는지 볼게요. 중지 되어있다면 active시켜줄게요

 

 

 

저장해주고 새로운 프로젝트를 만들러 가보겠습니다!


새로운 프로젝트 생성

 

프로젝트 이름은 My-Docker-Project

1. Poll SCM 을 체크 취소 !

 

 

 

 

2. 빌드 후 조치 

기존에 있었던 Deploy war ~ 를 삭제해주고 새로운 조치 추가해줍니다.

 

 

Send build artifacts over SSH 

추가해주면 기존에 추가했던 SSH서버가 생성된 것이  보입니다.

 

Transfer Set : 어떤 것을 복사해줄것인가?

Remote dir : . => 현재 디렉토리

Exec Command : 복사 이후 실행할 커멘드

 

저장해보겠습니다.

 

 

 

빌드 전에 file system을 살펴보겠습니다. 

 

빌드를 한번해보겠습니다.

 

 

 

file system을 살펴보겠습니다.

war파일이 생성된 것을 보실수 있을겁니다.

 

 

 

Dockerfile을 살펴볼겠습니다.

war를 tomcat 9.0 으로 실행해달라는 뜻이네요

 

 

 

이미지를 Dockerfile을 이용해서 build해볼게요

docker build -t docker-server -f Dockerfile

 

이미지가 잘 만들어졌는지 보겠습니다.

 

 

만들어진 이미지로 컨테이너를 실행해볼게요

docker run -p 8080:8080 --name mytomcat docker-server:latest

 

여기서 로컬에서 실행할때에 주의!!

 

우리는 로컬 서버 내부VM 서버를 설치하고 그 안에 도커를 설치해줬습니다.

우린 8081이라는 포트를 도커를 설치한 VM으로 통하도록 설정해줬습니다.

로컬서버의 docker-server 컨테이너

그럼 우린 VM에서 도커를 실행하려면 로컬: 8081로 연결이 되어야 VM :8080 으로 연결되고 이것을 컨테이너로 연결 할 수 있게됩니다.

 

그럼 실행하게되면 

 

 

로컬에서 IP(localhost):8081/hello-world로 접근해보겠습니다.

 

 


아까 Exec를 생성하지 못하고 넘어갔던 SSH 설정부분을 수정해주겠습니다.

docker build --tag=cicd-project -f Dockerfile .;
docker run -d -p 8080:8080 --name mytomcat cicd-project:latest

 

빌드 전에 그전에 등록했던 컨테이너와 이미지를 삭제해보겠습니다.

컨테이너 삭제:

 

이미지 삭제: 

 

war 파일도 삭제해보겠습니다.

 

저장하고 빌드해보겠습니다.

 

 

 

이미지와 컨테이너가 잘 생성된 것이 보입니다.

 

 

 


오늘은 새로운 서버에 도커를 설치하고 

Jenkins 를 이용해 SSH로 새로운 서버에 배포하는 작업을 해봤습니다.

 

다음 시간엔 IaC와 Ansible에 대해 배워보겠습니다. 

 

 


참고자료

🔗 - 인프런-Jenkins를 이용한 CI/CD pipeline 구축

 

 

 

 

 

728x90
반응형