devops

Jenkins 빌드 파일 다른 서버에 배포(maven,war)

yougeun 2024. 3. 11. 17:01
728x90

ssh server 설치및 설정

https://blog.yougeun.com/147

 

docker ssh server 설치 및 설정

1.docker ssh image 다운로드 docker pull edowon0623/docker 리눅스 기반 서버에 docker와 ssh서버가 설치되어있는 이미지를 다운받아줍니다. 2. docker 실행 docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:80

blog.yougeun.com

 

1.SSH 플러그인 설치

 

Publish over SSH plugin을 Jenkins에 설치해줍니다.

2. jenkins 관리 -> System Configration -> System -> Publish over SSH 추가

ssh server
password 및 port 입력

Name: docker-host

HostName:[local_IP]

username:root

Remote Directory:.

password:P@assword

port:10022

를 입력 후 하단의 Test Configuratuion을 눌러서 success가 뜨는지 확인합니다.

3. Jenkins설정

Poll SCM 끄기

 

 

빌드 후 조치 Deplay war/ear to a container 삭제,빌드후 조치 Send build artifacts over SSH 추가

 

빌드 유발에서 Poll SCM 설정을 꺼주고 빌드후 조치에서  Deplay war/ear to a container를 삭제 하고 빌드후 조치 Send build artifacts over SSH 추가하고 빌드합니다.

 

4. 배포확인

build console output
ssh 서버 확인

Jenkins_maven.war파일이 전달된 것을 볼 수 있다.

5. Docker file 생성

vi 명령어를 통해서 Dockerfile을 만들고 FROM에 프로젝트에 알맞는 tomcat버전을 쓰고 COPY 명령어를 통해 /usr/local/tomcat/webapps에 war파일을 복사해줍니다.

6.image 생성

docker build -t docker-server -f Dockerfile .

위 명령어를 통해  Dockerfile을 기준으로 image 이름이 docker-server인 이미지를 생성합니다.

7. Container 구동

console
localhost:8081/Jenkins_maven

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

위의 명령어를 통해 docker container를 구동시키고 주소창에 localhost:8081/[war파일 이름]을 접속하면 배포가 완료된 것을 볼 수 있다.

8. Jenkins를 통한 5~7 자동화

1. 5~7 container,image,war 파일 삭제

docker stop maven_project : container 중지
docker rm maven_project	: container 삭제
docker rmi Jenkins_project:latest	:이미지 삭제
rm -rm Jenkins_project.war	: war파일 삭제

위 명령어를 통해서 5~7에서 했던 container와 이미지 ,war파일을 삭제해줍니다.

2.Jenkins 설정

빌드 후 조치 SSH server

docker build -t docker-server -f Dockerfile .;
docker run -d -p 8080:8080 --name maven_project docker-server:latest

3번의 빌드 후 조치 부분에서 Exec command에 위의 명령어를 추가해주고 빌드합니다.

3.확인

build console output

 

빌드에 성공하면 ssh서버에 접속하여 구동되고 있는 컨테이너를 확인합니다.

728x90