T아카데미 - 컨테이너 기반 가상화 플랫폼 ‘도커(Doker)’의 이해


지속적 통합 및 전달(CI/CD)

- CI Continuous Integration
- CD Continuous Delivery
- 지속적으로 소스를 통합, 빌드, 테스트, 배포하는 과정
- CI 테스트 / 빌드 , CD 전달 / 배포
- 도커를 이용해 제품을 배포하는 과정
    * 소스 저장소에 최신 소스를 저장
    * 전체 소스를 다운로드
    * 테스트
    * 도커 이미지 만들기
    * 도커 이미지 저장하기
    * 애플리케이션 업데이트
- 자동화 할 경우, 개발자는 최신소스를 저장하는 것 까지만 하면 된다.
- 자동화 도구
    * jenkins
    * TrevisCI
    * CircleCI

 

Jenkins

- 빌드 / 테스트 / 코드분석 / 배포 / 알림 등 다양한 기능을 제공
- Master / Agent 구성 (하나의 Master에 다수의 Agent 구성 가능)
- 많은 플러그인 있음

 

Jenkins 실행

$ docker run -u root --rm -p 8080:8080 --name jenkins -v C:\jenkins:/var/jenkins_home subicura/jenkins:2
$ docker run -u root --rm -p 8080:8080 --name jenkins -v C:\jenkins:/var/jenkins_home -v /var/run/docker.sock:/var/run/docker.sock subicura/jenkins:2

- http://localhost:8080 접속

자동배포 스크립트 만들기

- pipeline

- create jop - pipeline

- 빈 stage 구성

- Build

- 자동배포 스크립트 - Pull

stage('Pull') {
	git 'https://github.com/subicura/docker-jenkins-workshop.git'
}

- 자동배포 스크립트 - build

stage('Build') {
	sh(script: '''docker build --force-rm=true -t das101096/ruby-app:latest .''')
}

   

 ★★ 윈도우일 경우 스크립트에 하단 내용 꼭 감싸기 ! (완전 헤멤)
        - withEnv(["DOCKER_HOST=tcp://host.docker.internal:2375"])

 

 ★ Docker hub ID & PW jenkins에 저장

- 자동배포 스크립트 - tag

stage('Tag') {
  sh(script: '''docker tag ${DOCKER_USER_ID}/ruby-app ${DOCKER_USER_ID}/ruby-app:${BUILD_NUMBER}''')
}

- 자동배포 스크립트 - push

stage('Push') {
  sh(script: 'docker login -u ${DOCKER_USER_ID} -p ${DOCKER_USER_PASSWORD}')
  sh(script: 'docker push ${DOCKER_USER_ID}/ruby-app:${BUILD_NUMBER}')
  sh(script: 'docker push ${DOCKER_USER_ID}/ruby-app:latest')
}

- 자동배포 스크립트 - deploy

stage('Deploy') {
  try {
  	sh(script: 'docker stop ruby-app')
  	sh(script: 'docker rm ruby-app')
  } catch(e) {
  	echo "No ruby-app container exists"
  }
	sh(script: '''docker run -d -p 10000:4567 --name=ruby-app ${DOCKER_USER_ID}/ruby-app:${BUILD_NUMBER}''')
}



 

'Devops > docker' 카테고리의 다른 글

개선사항 및 실무  (0) 2021.06.01
이미지 만들고 배포하기  (0) 2021.06.01
도커 컨테이너 만들기  (0) 2021.06.01
도커 개요 및 소개  (0) 2021.06.01

+ Recent posts