Jenkins를 이용해 Docker프로젝트 빌드해보기

wimes·2020년 4월 11일
0

CI/CD tutorial

목록 보기
6/7
post-thumbnail

본 포스팅은 동빈나 님의 Docker 활용 및 배포 자동화 실전 초급을 보고 정리한 글입니다.

Jenkins를 이용해서 배포자동화를 하는 것을 목적으로 합니다.
즉, 다시말해 소스코드를 GitHub에 푸시하는 것만으로도 서버에 배포까지 자동으로 해주는 것입니다.

우선 모든 docker container를 종료해주는 것으로 시작하겠습니다.

  sudo docker ps -a
  sudo docker rm -f 87

Jenkins 이미지 다운로드

sudo docker pull jenkins/jenkins:lts

우리는 Jenkins 또한 컨테이너 형태로 이용을 할 것입니다. 다시말해 Jenkins container 안에서 새로운 project container를 띄우는 것입니다. 이러한 방식을 흔히 docker in docker라고 합니다.

젠킨스 구동

젠킨스는 기본적으로 8080포트를 이용하기 때문에 호스트의 8080과 젠킨스포트를 맞춰줍니다.
그리고 호스트의 /home/jenkins와 젠킨스 컨테이너 /var/jenkins_home을 볼륨 마운틴 해줍니다.(/home/jenkins:/var/jenkins_home)
이제 젠킨스 컨테이너 (/var/jenkins_home)안에서 새롭게 우리의 프로젝트 컨테이너를 구동시킬 것이기 때문에 docker.sock 파일을 볼륨해줍니다.(/var/run/docker.sock:/var/run/docker.sock)
이를 root 계정으로 (jenkins imageId로)구동을 시켜주도록 합니다.( -u root 7e250da768ed )

sudo docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -u root 7e250da768ed

이제 EC2 대시보드에서 인바운드 규칙을 설정해주도록 합니다.

실제로 8080포트로 접속을 해주면 아래와 같이 젠킨스 프로그램이 구동되는 것을 볼 수 있습니다.

젠킨스 관리자 비밀번호를 넣으라고 하는데 젠킨스는 초기에 실행될 때 log에서 패스워드를 얻을 수 있습니다.

  sudo docker ps -a
  sudo docker logs 00

위의 패스워드 값을 넣어주고 Continue를 눌러줍니다.

우선 기본적인 plugin을 전부 설치해주도록 합니다.(약 5~ 10분정도 걸립니다.)

설치가 다되었다면 아래와 같은 화면이 나옵니다. 우리가 실습을 하는 과정에서는 모든 plugin은 필요없기 때문에 continue를 눌러줍니다.

중간에 Configuration을 설정하라고 나오는데 우리는 실습예제이기 때문에 not now를 눌러줍니다.

새작업 > 이름: Example > Freestyle project 로 생성해줍니다.

Build > Execute shell

cammand에 우리의 dockerHub에 있는 project를 그대로 pull 받아서 실행시키도록 하는 명령어를 작성해줍니다.(gitHub readme.md run 참고)

Consoleoutput을 통해 log를 볼 수 있습니다.

jenkins container에 docker를 찾을 수 없다고 하니 docker를 설치해주도록 합니다.

  sudo docker ps -a
  sudo docker exec -it 5a /bin/bash

도커를 설치해줍니다.curl -fsSLO https://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz

압축을 풀어줍니다. tar xzvf docker-17.04.0-ce.tgz

bin 폴더에 옮겨 docker 명령어를 사용할 수 있도로 해줍니다. mv docker/docker /usr/local/bin

저장공간 확보를 위해 기존의 압축파일은 제거해줍니다. rm -r docker docker-17.04.0-ce.tgz

원할한 사용을 위해 docker에 로그인 해줍니다. docker login

home으로 이동합니다. cd /home

우리의 gitHub 또한 clone을 해줍니다. git clone https://github.com/kiryun/Docker-practice

해당 컨테이너에서 나와줍니다. exit

다시 BuildNow를 눌러줍니다. Console Output을 확인해보면 apache 서버가 제대로 실행되고 있는 것을 볼 수 있습니다.

profile
iOS/Swift & Node.js Dev.

0개의 댓글