USECASE-3(GIT,Maven,Jenkins, Docker, Tomcat 통합)

Apr 09 2023
여기 오기 전에 유스케이스-2를 시청하세요. 이 유스케이스를 배우게 될 것입니다: IT 직원으로서 우리는 많은 영역(코딩, 지원, 인프라)에서 일하지만 새로운 서비스를 온보딩하는 동안 우리는 정확히 코드가 프로덕션에 어떻게 배포될지 알지 못합니다. 요구 사항을 프로덕션에 온보딩할 수 있는 많은 가능성이 있습니다.

여기 오기 전에 usecase-2를 시청하세요.

이 사용 사례에서 배우게 될 내용:

IT 직원으로서 우리는 많은 영역(코딩, 지원, 인프라)에서 작업하지만 새로운 서비스를 온보딩하는 동안 코드가 프로덕션에 정확히 어떻게 배포되는지 알지 못합니다. 요구사항을 프로덕션에 온보딩할 수 있는 많은 가능성이 있습니다. 이 사용 사례는 코드를 프로덕션에 배포하는 방법 중 하나를 설명합니다.

이 비디오에서는 문제를 해결하는 방법도 설명했습니다. 이 녹화가 완료된 후 문제 해결 없이 다른 동영상을 녹화했습니다. 하지만 사람들은 실수를 바로잡는 방법도 배워야 한다고 생각합니다. 그래서 저는 이 영상을 올리는 것을 선호했습니다. 계속 실패하고 자세히 알아보기

단계

  • 1단계: Jenkins, Maven, GIT 및 Tomcat을 설치합니다(usecase-2를 시청하세요).
  • 2단계: 도커 설치
  • 3단계: jenkins에 Docker 정보 추가
  • 4단계: jenkins 서버와 Docker 서버 간에 ssh 키 교환
  • 5단계: 젠킨스 작업 생성
  • 6단계: 웹 애플리케이션 액세스

이전 동영상(Jenkins, Maven 및 Tomcat 설치 방법)을 시청하고 동일한 저장소에 있는 문서 첨부 파일을 따르십시오.

Jenkins, maven 및 tomcat이 준비되면

2단계: 도커 설치

EC2 인스턴스에 도커 설치 및 서비스 시작

yum install docker

service docker start

아래 지침을 주의 깊게 따르십시오.

useradd dockeradmin

passwd dockeradmin

usermod -aG docker dockeradmin

visudo

dockeradmin ALL=(ALL)       NOPASSWD: ALL (add dockeradmin user after root)

vi /etc/ssh/sshd_config ( disable --> PasswordAuthentication no & enable PasswordAuthentication yes )

service sshd restart

mkdir /opt/docker

chown -R dockeradmin:dockeradmin /opt/docker/

vi Dockerfile
From tomcat:9-jre9 

# Maintainer
MAINTAINER "cloudnloud" 

# copy war file on to container 
COPY ./webapp.war /usr/local/tomcat/webapps

Jenkins 콘솔에 로그인하고 Docker 서버를 추가하여 Jenkins에서 명령을 실행합니다.

Jenkins 관리 → 시스템 구성 → SSH를 통해 게시 → Docker 서버 및 자격 증명 추가 추가 클릭  SSH 서버 : dockerhost 호스트 이름: 서버 IP(공용 IP) 사용자 이름: dockeradmin 고급 클릭  비밀번호 활성화  비밀번호: dockeradminpassword 제공

4단계: jenkins 서버와 Docker 서버 간에 키 교환

dockeradmin 사용자로 jenkins에 로그인

ssh-keygen

ls -a cd .ssh/ ssh-copy-id IPADDREE(두 번째 서버 IP 주소)

(도커 서버와 젠킨스 서버를 연결하려면(제닌킨스 서버에서는 junekins, tomcat, git을 모두 설치합니다)

5단계: 젠킨스 작업 생성

Jenkins 작업 만들기

작업 생성 → maven 프로젝트 →

A) 소스 코드 관리 저장소 :https://github.com/veejee2331/webapplication빌드할 브랜치 : */main

B) 루트 POM 빌드: pom.xml 목표 및 옵션: 클린 설치 패키지

C) 사후 단계 → 사후 빌드 단계 추가 → 선택

SSH를 통해 파일 보내기 또는 명령 실행

이름: docker_host 소스 파일: webapp/target/*.war접두사 제거: webapp/target원격 디렉터리://opt//docker

실행 명령:

docker stop cloundnloud_demo;
docker rm -f cloundnloud_demo;
docker image rm -f cloundnloud_demo;
cd /opt/docker;
docker build -t cloundnloud_demo .

SSH를 통해 파일 보내기 또는 명령 실행

이름: docker_host 실행 명령:

docker run -d --name cloundnloud_demo -p 8090:8080 cloundnloud_demo

F) Jenkins 작업 실행

G) Docker 호스트에서 이미지와 컨테이너를 다시 확인합니다. 이번에는 이미지와 컨테이너가 Jenkins 작업을 통해 생성됩니다.

6단계: 웹 애플리케이션 액세스

컨테이너에서 실행 중인 브라우저에서 웹 애플리케이션에 액세스

http://<docker_host_Public_IP>:8090/uri