본문 바로가기

개발/Linux & DevOps

docker jenkins CD/CI ① - 각자 역할, 작동 흐름 절차

 

회사에서 수동으로 배포를 하고 있는 문제점을
jenkins, docker 를 사용한 자동 배포 시스템 + harbor private docker hub를 구축하여 해결 중이다.

맨 처음 구축할 때 

  1. git pull
  2. project build
  3. docker build
  4. docker run

의 과정에서,

Q. 어디서 build 가 일어나고, 어디서 run 하게 되는가?

A. 별도의 세팅을 하지 않을 경우:
jenkins 서버에서 저 일련의 과정들이 실행되고, 결과물도 다 jenkins 서버에 남는다.

jenkins 서버 안에서 git pull, build, docker run 이 실행된다.
= docker_hub는 이미지를 다운로드 받는 단방향 통신만 일어난다.
이 안에서 docker image가 업데이트는 되지 않는다.
(docker image 를 업데이트 하고, container 가 새로 생성되며 동기화되는 방식인 줄 알았다.)

단지 apache 등 프로그램의 버전 컨트롤, 기본 환경 세팅에 필요한 base image 를 끌어오고,
git 프로젝트 소스코드를 올려 docker build  후 docker run 역할이다.

Q. pipeline속 bash 커맨드, dockerFile속 bash 커맨드, 무슨 차이인가?

A. pipeline 이 주 흐름이다. 그 안에 과정에서 docker build 를 할때 dockerFile 속 bash 커맨드가 실행되는데,
이 bash 커맨드는 전부 apt-get 과 같이 환경세팅에 필요한 라이브러리를 다운로드하는 커맨드 + project build 의 결과물과 conf 파일을 mv 하는 커맨드만 있다.
local 에서 서비스용 image 를 생성하기 위한 커맨드이다.

정리하면

  • jenkins의 역할 : 전체 pipeline 실행, 결과물도 jenkins 서버에 생성
  • docker의 역할 : docker_hub 로부터 download base image → container 를 생성해서 기본환경 제공,
                         docker build, run 해서 최종 서비스 container 생성, 실행.

 

당연히 jenkins 서버 말고 실제 서비스 서버가 따로 있으니 publish over ssh 설정을 해줘야한다.

하지만 publish over ssh 설정 중 exec 입력란이 있는데, 이는 pipeline 의 역할과 겹친다.

다음 글을 통해 publish over ssh + pipeline 에 관해 다뤄본다.

반응형