티스토리 뷰

글날라갔다. 빡친다.

오늘도 무엇을 할 적어두고 시작하자.

 

1. 도커의 젠킨스 이미지를 pull한다. 도커 사설 registry 설치해서 실행한다.

2. 도커의 젠킨스 이미지로 컨테이너 띄운다.

3. 2번의 컨테이너에(이하 젠킨스) 접속해서 docker 업데이트를 해준다.

4. 도커 비밀번호 입력하고, 초기 기본 라이브러리 설치 안하고 깡통으로 설치한다.

5. 젠킨스 접속하여 필요한 라이브러리를 설치한다. (Bitbucket, Docker, Docker-Build-Step)

6. 웹훅 설정한다.

7. 젠킨스에 mvn, docker 설정을 한 후 잘 뜨나 확인 한다.

 

 

자 이제 명령어랑 사진..? 가끔.. 쳐보자

 

1. docker pull jenkins/jenkins:lts 하여 젠킨스 풀 땡긴다.

1-1. registry 는 뭐 대강 땡겨서 대강 설치하면 대강 된다. 설정할께없다..

 

2. docker run -d -p 8080:8080 -v /var/run/docker.sock:/var/run/docker.sock --name jenkins  jenkins/jenkins:lts

/var/run/docker.sock 여기 설정이 중요하다. 도커 컨테이너 안에 있는 젠킨스에 tcp로 접속을 해야하는데

이걸 못해서 삽질을 엄청 했다. 리눅스에 젠킨스 설치하고 하면 별 문제 없이 넘어갈 부분인거 같다.

 

3. 젠킨스에 접속해서 docker 업데이트 해준다.

apt-get update && \
apt-get -y install apt-transport-https \
     ca-certificates \
     curl \
     gnupg2 \
     software-properties-common && \
curl -fsSL https://download.docker.com/linux/$(. /etc/os-release; echo "$ID")/gpg > /tmp/dkey; apt-key add /tmp/dkey && \
add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/$(. /etc/os-release; echo "$ID") \
   $(lsb_release -cs) \
   stable" && \
apt-get update && \
apt-get -y install docker-ce

 

4. docker exec jenkins cat /var/jenkins_home/secrets/initialAdminPassword

 이걸로 비밀번호 찾고 설치 시작!

설치할 때는 깡통으로 설치해라.. 그래야 빠르다...

 

5. 젠킨스 접속하여 필요한 라이브러리를 설치한다. (Bitbucket, Docker, Docker-Build-Step)

https://updates.jenkins.io/download/plugins/bitbucket/

(비트버켓 관련 라이브러리)

 

https://updates.jenkins.io/download/plugins/docker-plugin/

(도커 관련 라이브러리)

 

https://updates.jenkins.io/download/plugins/docker-build-step/

(도커 빌더)

 

https://updates.jenkins.io/download/plugins/maven-plugin/

(Mane 라이브러리)

 

이 4가지 다운받아서

젠킨스 들어가서 jenkinsr관리 -> 플러그인 관리-> 고급 -> 플러그인 올리기 에서 파일 올리면된다.

참고로 젠킨스 라이브러리 파일 확장자는 hpi 이다.

설치가 한번에 안되면 재부팅 여러번 하면 된다. 

 

hoxy... 젠킨스 접속 방법은

http://{젠킨스 이미지 떠있는 주소}:{docker run 할 때 띄운 포트} 이다

나같은경우는 http://localhost:8080 이겠죠?

 

6. 웹훅 설정한다.

 

7. 젠킨스 들어가서 여러가지 설정 해 준다..

여기가 이제 헬인대.. 우선 이전 글의 Docker Spring Boot 이미지 빌드하기 에서 Dockerfile 만드는 걸 잘 기억하고 있으면 된다.

 

7-0. jenkins관리 -> 환경설정 ->Docker Builder 탭에 가서

로 설정 해준다.

권한 없음 오류가 나면

도커가 설치되어 있는 리눅스에서

chmod 777 /var/run/docker.sock 로 권한을 주면 된다.

 

/run/docker.sock No Such File or Directory 오류가 나면 2번중에 뭔가 빼먹거나 오류가 난거니 다시 해보거나 다시 검색을 해서 해결해야 한다.

 

 

7-1. 난 메이븐으로 컴파일 한다. 따라서 젠킨스에서 메이븐 명령어를 실행 시킬 수 있어야 한다. mvn clean package 이딴거 쉘 스크립트에 쳐놓으면 도커는 젠킨스만 포함해서 깔아놨기 때문에 못알아먹는다.

그래서..

jenkins관리 -> Global Tool Configuration

에 Maven 탭에 가서 설치해준다.

 

이름은 이름이고 여기서 만든 이름이 나중에 Docker Build설정 시에 나타난다.

 

7-2. freestyle 프로젝트로 젠킨스 아이템 만든후 설정을 해보자.

비트버켓 계정과 뭐시기 뭐시기 해서 설정을 한다.

Branches to build 에 /developer 로 설정했다. 테스트 서버 developer 커밋에 도커 빌드를 할 것이기 때문이다.

 

7-2.

이후 Build when a change is pushed to BitBucket 설정을 하면 웹 훅 설정이 되어있을 경우 트리거가 발생해 이후 작업을 진행하게 된다.

 

이전 글에서 Spring Boot Docker 이미지 만들기에서는 jar 파일로 컴파일 후에 Dockerimage 를 만드는 과정을 거치기 때문에

Invoke top-level Maven targets 에 아까 설정한 mvn 를 선택 한 후에 clean package 를 실행하여 jar 파일을 만든다.

 

7-3.

execute shell 에 도커 이미지 빌드 명령어를 작성해 둔다. 이하 코드블록은 전부 execute shell 이다.

#docker image build
docker build -f Dockerfile -t docker_test .

 

이후 생성된 이미지의 tag 를 변경한다. 이는 아까 설치한 registry에 push 하기 위함이다.

docker tag docker_test:latest 127.0.0.1:5000/docker_test:$BUILD_NUMBER

여기서 $BUILD_NUMBER 는 젠킨스 아이템에서 사용하는 상수이다.

 

7-4.

이미지를 만든 것-> 태그 변경-> registory 에 push 를 한다.

docker push 127.0.0.1:5000/docker_test:$BUILD_NUMBER

7-5 

docker stop docker_test || true && docker rm docker_test || true

해당 명령어는 docker_test 이미지로 이미 컨테이너가 떠있으면 docker 컨테이너를 스탑 후에 docker 컨테이너를 삭제를 한다.

하는 명령어 이다.

 

7-6 

docker run -p 8080:8080 -d -e TZ=Asia/Seoul --network=host --name docker_test 127.0.0.1:5000/docker_test:$BUILD_NUMBER

해당 명령어는 사설 registry 에 업로드 되어있는 이미지로 컨테이너를 실행 시키는 명령어 이다.

 

7-7

docker rmi 127.0.0.1:5000/docker_test:"$(($BUILD_NUMBER-1))"

이후 이전 버전의 이미지를 삭제 한다. 나는 Build_NUMBER 로 버전체크를 해서 이렇게 했다.

다른 규칙 있으면 그대로 적용해서 하면된다.

 

 

4일정도 소모 한 것 같은데 툴 명령어가 익숙치 않아서 고생을 많이 한 것 같다.

다들 화이팅.

'Spring' 카테고리의 다른 글

Spring Custom Annotation 만들기  (0) 2019.12.11
Docker swarm 적용  (0) 2019.12.02
Docker 적용하기 (Spring Boot)  (0) 2019.11.27
Docker 적용하기 (Mariadb)  (0) 2019.11.26
Project Module  (0) 2019.11.21
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함