젠킨스로 빌드하여 도커에 배포하기

salgu·2022년 11월 26일
0

jenkins

목록 보기
3/4

실습 구성


도커위에 젠킨스 컨테이너와 SSH가 설치되어있는 컨테이너가 있고
젠킨스의 컨테이너에서 빌드하여 SSH로 빌드파일을 전달한 뒤 해당 빌드 파일을 컨테이너화 시켜 도커로 구동합니다.(도커안에 도커)






SSH Server 세팅


SSH가 설치되어 있는 리눅스 도커 이미지 실행

docker run --privileged --name docker-server -itd -p 10022:22 -p 8081:8080 -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup:rw --cgroupns=host edowon0623/docker-server:m1 /usr/sbin/init

접속

ssh root@localhost -p 10022

내부에서 도커 실행

SSH 서버에 유틸 서비스 설치

yum install -y iptables net-tools

젠킨스 세팅


젠킨스 ssh 플러그인 설치

젠킨스 ssh 설정



  • Hostname 부분에서 localhost, 127.0.0.1을 넣게 되면 젠킨스 컨테이너가 루프백을 해버려 젠킨스 컨테이너를 가르키게 되기 때문에 Host의 IP를 정확하게 입력해주어서 접속합니다.
  • 설정을 해준뒤 Test Configuration을 눌러 Success가 뜨는지 확인합니다.


새로운 아이템을 생성한 뒤 빌드 후 조치에서 Send build artifacts over SSH에서 앞전에 해두었던 SSH 설정을 지정해줍니다.





수동 도커 배포 테스트


SSH 복사 테스트


지금 빌드를 실행해주고 정상적으로 젠킨스서버에서 SSH서버로 war파일이 전달되었는지 확인해줍니다.

DockerFile 작성

SSH 서버에 전달받은 war파일을 tomcat으로 구동하기 위한 DockerFile을 작성해줍니다.

실행



해당 도커파일을 이미지로 빌드 해주고 컨테이너로 실행해줍니다.

테스트 결과


8081포트로 접속해주시면 정상적으로 테스트가 된것을 확인할 수 있습니다.


앞전에서 SSH서버를 8081 -> 8080으로 포트포워딩 시켜주었기 때문에 8081로 접속했을때 정상적으로 구동이 된것을 확인할 수 있습니다.





Git Poll SCM, SSH 전송 후 자동 빌드


DockerFile이 정상적으로 테스트 된것을 확인했다면
소스 코드 관리 -> 빌드 유발에 가시면 Poll SCM 을 선택해주고 스케쥴러를 원하는대로 설정해줍니다.
스케쥴러 설정해놓은대로 젠킨스가 해당 깃 레포지토리를 확인하여 새로운 커밋이 들어왔다면 젠킨스가 돌게 됩니다.

젠킨스 서버에서 SSH로 정상적으로 복사가 되었다면 Exec command에서 실행할 스크립트를 작성해줍니다.
중간에 컨테이너를 종료시키는 이유는 같은 이름의 컨테이너가 존재한다면 정상적으로 빌드가 되지않는 오류가 발생하기 때문에 종료를 해주고 컨테이너를 실행해줍니다.

profile
https://github.com/leeeesanggyu, leeeesanggyu@gmail.com

0개의 댓글