인프런 Dowon Lee님의 Jenkins를 이용한 CI/CD Pipeline 구축 강의를 수강하며 작성한 내용입니다.
기존에 만들었던 아이템 설정에서 조금만 바꿔줄 것이기 때문에 복사해서 사용한다.
이름은 my-docker-project
주기적으로 배포해주는 기능은 여기선 사용하지 않는다. -> Poll SCM 기능 Disable
컨테이너에 직접 배포하는 기능 역시 사용하지 않는다. -> Deploy war/ear to a container Delete
대신에 SSH서버에 만든 결과물을 보내주는 기능을 추가하자.
패키징된 결과물(build artifacts)을 SSH서버에 보내는 옵션 클릭
SSH 서버이름은 전 시간에 만든 서버 이름을 넣는다.
Transfer Set 옵션
Source file : 어떠한 파일을 복사할 것인지??
target/*.war
: 현재 디렉토리에 있는 target 폴더안에 모든 war 파일을 복사하겠다.Remove prefix : 삭제하고 싶은 prefix가 있는지??
target
:target/*.war
을 복사하게 되면 target이라는 이름도 복사가 되기때문에 삭제한다.Remote directory : 복사될 위치는 어디로 할래??
.
: 현재 디렉토리(/root
)에 바로 복사할거다.Exec command : 복사가 끝난뒤에 어떤 커맨드를 실행할 것인지??
복사가 정상적으로 되는지 확인먼저 할거라서 공란으로 둔다.
빌드하기 전에 SSH에 접속해서 파일 목록을 봤다.
war 파일은 아직 없는 것을 확인할 수 있다.
이렇게 정상적으로 빌드가 잘 완료되고 SSH 서버에 잘 넘어갔다고 확인이 되면 SSH서버에 war이 생긴것을 확인할 수 있다.
도커 이미지를 생성해보자.
전에 얘기했던 것처럼 image파일은 war파일과 dockerfile이 있어야 만들 수 있다.
docker build -t docker-server -f Dockerfile .
이미지 이름은 docker-server 로 하고 -f
옵션으로 dockerfile의 파일 이름을 적어줬다.
마지막 .
은 현재 디렉토리 기준으로 빌드를 하라는 의미가 되겠다.
이렇게 이미지가 잘 생성되었다.
이제 이미지를 가지고 컨테이너를 기동해 보자.
localhost:8081로 접속하면 SSH서버가 있는 도커 컨테이터 8080으로 접속하게 되고
다시 8080으로 들어온 것은 빌드한 tomcat서버가 있는 8080포트로 들어오도록 만들자.
컨테이너를 확인해보면 로컬호스트 8081은 docker-ssh-server 의 8080으로 넘어간다.
docker run -p 8080:8080 --name mytomcat docker-server:latest
위에서 만든 이미지로 컨테이너를 동작시키자.
도커로 했던 이 작업들을 젠킨스에서 실행해보자!