Docker & Jenkins 자동배포 하기
https://github.com/jangky000/docker-jekins-express
아래 문서는 NCP 서버 기본설정 완료를 전제로 함
도커 설치
참고: https://blog.cosmosfarm.com/archives/248/우분투-18-04-도커-docker-설치-방법/
# 현재 사용가능한 메모리 공간을 확인하기
df -h
/dev/xvda1 48G 4.4G 41G 10% /
# apt 업데이트
sudo apt upadate
sudo apt install apt-transport-https
sudo apt install ca-certificates
sudo apt install curl # 특정한 웹사이트에서 데이터를 다운 받을 때 사용
sudo apt install software-properties-common
### 도커 설치 과정
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 레포지터리 리스트에 추가
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
apt-cache policy docker-ce
sudo apt install docker-ce # 설치
# 도커 설치 시 자동으로 시스템 서비스로 등록 된다.
sudo systemctl status docker
# 아래 명령어로 도커가 정상적으로 실행 중인지 확인할 수 있다.
프로젝트 최상단에 Dockerfile 생성
- Node를 위한
Dockerfile
생성하기
https://programmingsummaries.tistory.com/392
https://velog.io/@koozzi/Docker-Node.js로-이미지를-생성하고-컨테이너-실행해보기
FROM node:14.9.0
MAINTAiNER name <[email protected]>
RUN mkdir -p /temp
WORKDIR /temp/server
ADD . /temp
RUN npm install
ENV NODE_ENV development
EXPOSE 3000 80
CMD ["npm", "start"]
Dockerfile build 예시
# 빌드 태그 이름(이미지 이름): example
# 현재 경로(.)에서 빌드 수행
# Dockerfile을 찾아서 example 이름으로 build
sudo docker build -t example .
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
example latest 289a27587de4 12 seconds ago 158MB
ubuntu 18.04 56def654ec22 7 weeks ago 63.2MB
hello-world latest bf756fb1ae65 10 months ago 13.3kB
docker run -p [호스트 서버의 포트]:[컨테이너포트] example
sudo docker run -p 80:80 example
http://공인ip로 접속 확인
Dockerfile Build & Run
sudo docker build -t 생성할이미지/태그명 .
docker run -d -p 3000:3000 생성한이미지/태그명
-d는 데몬
Jenkins 설치
https://velog.io/@wimes/Jenkins를-이용해-Docker프로젝트-빌드해보기 참조
# 도커 컨테이너 종료
sudo docker rm -f `sudo docker ps -a -q`
# sudo docker pull jenkins -> 안 됨
sudo docker pull jenkins/jenkins:lts
- 젠킨스 컨테이너 안에서 express를 실행할 것이다.
- 이러한 구조를 docker in docker
Jenkins 실행
# jenkins는 기본적으로 8080 포트를 사용
# 호스트 서버 /home/jenkins와 젠킨스 컨테이너 /var/jenkins_home를 연결(볼륨 마운팅)
# 호스트 서버 /var/run/docker.sock 파일을 젠킨스 컨테이너 /var/run/docker.sock로 연결
# 이 이유는 젠킨스 컨테이너 안에 express 컨테이너를 실행할 것이기 때문
# root 계정으로 jenkins/jenkins 구동
# 이거 안됨 # sudo docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -u root jenkins
sudo docker run -d -p 8080:8080 -v /home/jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock -u root [jenkins/jenkins image_id]
sudo docker ps -a
# http://공인ip:8080/ 로 이동
# initialAdminPassword를 입력하는 창이 나온다
# 로그 출력
# sudo docker logs [Jenkins 컨테이너 id] -> 안 나올 시
# initialAdminPassword 확인
sudo docker exec -it [Jenkins 컨테이너 아이디] /bin/bash
cat /var/jenkins_home/secrets/initialAdminPassword
# 값을 복사해서 웹에 붙여넣고 continue 클릭
왼쪽 클릭 5~10분 정도 소요
Jenkins 컨테이너 안에 도커 설치하기
sudo docker ps -a
sudo docker exec -it [Jenkins 컨테이너 id] /bin/bash
### 도커 설치
curl -fsSLO http://get.docker.com/builds/Linux/x86_64/docker-17.04.0-ce.tgz
tar xzvf docker-17.04.0-ce.tgz
# bin 폴더로 도커의 실행 파일을 이동
mv docker/docker /usr/local/bin
# 용량 줄이기 위해서 기존 압축 파일 제거
rm -r docker docker-17.04.0-ce.tgz
docker login
cd /home
git clone https://github.com/jangky000/docker-jekins-express
# 컨테이너에서 나오기
exit
GitHub Web Hook 설정
참고
https://goddaehee.tistory.com/260
https://goddaehee.tistory.com/258
1.jenkins 설정
jenkins와 github을 연동
- Jenkins 관리 > 시스템 설정 클릭
- 하단으로 이동 하여 Github 관련 설정 > 원하는 Name 지정 > Add 클릭
-
Domain : Global credentials (unrestricted) 선택
-
Kind : Secret text 선택
-
Secret : 위에서 생성한 토큰 입력
-
ID : 본인이 지정하는 식별자(ID) 입력
- Test connection 클릭시 정상 연동 확인
신규 Item 생성
- New Item(새로운 Item 클릭)
- 원하는 Project명 입력 > Freestyle project 클릭
- General > Github project > Project url > 본인의 github project URL 입력
- 소스코드관리 > Git 클릭 > Repository URL 입력 > Credentials (위에서 만든 Credential 선택) > Branch 정보 입력
출처:
https://goddaehee.tistory.com/258
[갓대희의 작은공간]
Jenkins 설정
- 신규 Item을 생성하거나, 이전 포스팅에서 생성하였던 Github과 연동 되어있는 Item 설정 페이지로 이동.
- 빌드 유발 탭 이동 >> GitHub hook trigger for GITScm polling 체크
모든 설정이 완료 되었다면, 이후 설정한 Branch에 Push를 하였을때, 자동으로 jenkins 빌드가 유발되는 것을 볼 수 있다.
출처:
https://goddaehee.tistory.com/260
[갓대희의 작은공간]
Author And Source
이 문제에 관하여(Docker & Jenkins 자동배포 하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jangky000/Docker-Jenkins-자동배포-정리저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)