Jenkins를 활용한 자동 배포
Jenkins에서 Docker 컨테이너를 대상 환경에 배포하는 CI/CD 파이프라인을 만듭니다.
Jenkins를 활용한 자동 배포은(는) CoddyKit의 무료 Docker & DevOps Fundamentals 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Docker & DevOps Fundamentals 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
자동 배포 소개
Jenkins와 Docker를 사용한 CI/CD의 마지막 레슨에 오신 것을 환영합니다! 오늘은 Docker 컨테이너 배포를 자동화하는 방법에 초점을 맞추겠습니다.
자동 배포란 수동 개입 없이 소프트웨어를 운영 환경이나 스테이징 환경에 릴리스하는 프로세스입니다. 이는 지속적 제공 및 지속적 배포의 핵심 요소로, 속도와 일관성, 안정성을 보장합니다.

배포를 자동화해야 하는 이유
애플리케이션을 수동으로 배포하면 느리고 오류가 발생하기 쉬우며 일관성이 떨어질 수 있습니다. 자동화는 이러한 문제를 해결합니다.
- 속도: 새로운 기능이나 수정 사항을 빠르게 배포합니다.
- 안정성: 표준화된 프로세스를 사용하여 사람의 실수를 줄입니다.
- 일관성: 모든 배포가 동일한 단계를 따르도록 보장합니다.
- 효율성: 개발자가 배포 작업이 아니라 코딩에 집중할 수 있도록 합니다.
배포 파이프라인 단계
일반적인 Docker 배포용 Jenkins 파이프라인에는 다음과 같은 주요 단계가 포함됩니다.
- 빌드: Docker 이미지를 빌드합니다(이전 레슨에서 다룸).
- 테스트: 이미지를 대상으로 자동화된 테스트를 실행합니다.
- 푸시: 이미지를 Docker 레지스트리에 푸시합니다.
- 배포: 레지스트리에서 이미지를 가져와 대상 서버에서 실행합니다.
- 검증: 새 배포가 정상 상태인지 확인합니다.
오늘은 '배포' 및 '검증' 단계에 초점을 맞추겠습니다.
대상 환경 설정
Jenkins가 배포를 수행하기 전에 대상 서버가 준비되어 있어야 합니다. 일반적으로 다음을 의미합니다.
- Docker 설치: 대상 서버에 Docker Engine이 설치되어 있어야 합니다.
- SSH 액세스: Jenkins에 대상 서버에 대한 보안 셸(SSH) 액세스 권한이 있어야 합니다.
- 사용자 권한: SSH 사용자가 Docker 명령을 실행할 권한을 가지고 있어야 합니다.
SSH 자격 증명은 일반적으로 Jenkins 내부에서 안전하게 관리합니다.
SSH용 Jenkins 자격 증명
원격 서버에 연결하기 위해 Jenkins는 SSH 자격 증명을 사용합니다. 일반적으로 Jenkins의 자격 증명 관리자에 SSH 사용자 이름과 개인 키 쌍을 안전하게 저장합니다.
파이프라인을 정의할 때 특정 단계에서 Jenkins가 이러한 자격 증명을 사용하도록 지정하면 대상 서버에서 명령을 실행할 수 있습니다.
기본 배포 스크립트 예제
다음은 대상 서버에서 Docker 컨테이너를 업데이트할 때 실행할 수 있는 간단한 셸 스크립트입니다. 기존 컨테이너를 중지하고 삭제한 다음 새 이미지를 가져와 실행합니다.
APP_NAME과 IMAGE_NAME은 환경 변수로 전달됩니다.
#!/bin/bash
# Stop and remove existing container
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
# Pull the new Docker image
docker pull ${IMAGE_NAME}
# Run the new container
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment of ${APP_NAME} complete!"Jenkins 파이프라인과 통합
Jenkinsfile에서는 sshPublisher 플러그인 또는 SSH 에이전트 전달을 사용하는 간단한 sh 단계로 원격 호스트에서 명령을 실행할 수 있습니다. SSH가 구성되어 있다고 가정하고 기본 sh 단계를 사용한 배포 단계의 예는 다음과 같습니다.
agent { label 'remote-deploy-host' }는 이 단계가 대상 서버에서 실행된다는 뜻입니다.
stage('Deploy to Production') {
agent { label 'remote-deploy-host' }
steps {
withEnv([
"APP_NAME=my-webapp",
"IMAGE_NAME=myregistry/my-webapp:latest"
]) {
sh '''
docker stop ${APP_NAME} || true
docker rm ${APP_NAME} || true
docker pull ${IMAGE_NAME}
docker run -d --name ${APP_NAME} -p 80:80 ${IMAGE_NAME}
echo "Deployment successful!"
'''
}
}
}롤링 업데이트 구현
중단 없는 배포를 위해서는 단순히 중지한 후 다시 시작하는 방식만으로는 충분하지 않습니다. 일반적으로 다음과 같은 전략을 사용합니다.
- 롤링 업데이트: 서비스 가용성을 유지하면서 기존 컨테이너를 새 컨테이너로 하나씩 점진적으로 교체합니다.
- 블루/그린 배포: 기존 버전(블루)과 함께 새 버전(그린)을 배포한 다음 트래픽을 전환합니다.
Jenkins로 이러한 작업을 조정할 수 있지만 Docker Swarm이나 Kubernetes 같은 도구는 더 발전된 전략을 기본적으로 지원합니다.
배포 검증
배포한 후에는 애플리케이션이 올바르게 실행되는지 확인하는 것이 중요합니다. 다음과 같은 방법을 사용할 수 있습니다.
- 상태 확인: 애플리케이션의 상태 엔드포인트에 간단한 HTTP GET 요청을 보냅니다.
- 로그 모니터링: 컨테이너 로그에서 오류를 확인합니다.
- 통합 테스트: 새로 배포한 버전을 대상으로 간단한 테스트를 실행합니다.
Jenkins 파이프라인에 '검증' 단계를 포함하여 이러한 확인을 자동화할 수 있습니다.
지식 확인
배포 단계에 해당하는 다음 Jenkinsfile 코드 조각을 살펴보십시오. docker stop ${APP_NAME} || true의 주된 목적은 무엇입니까?
복습: 자동 배포
잘하셨습니다! Jenkins와 Docker를 사용하여 자동 배포를 수행하는 방법을 배웠습니다.
- 자동 배포는 빠르고 안정적이며 일관된 릴리스를 보장합니다.
- 대상 환경에는 Docker와 SSH 액세스가 필요합니다.
- Jenkins는 안전한 자격 증명을 사용하여 원격 서버에 연결합니다.
- 배포 스크립트는 일반적으로 기존 컨테이너를 중지하고 새 이미지를 가져온 다음 새 컨테이너를 시작합니다.
- 성공적인 배포를 확인하려면 검증 단계가 중요합니다.
이것으로 Jenkins 및 Docker를 사용한 CI/CD 과정이 끝납니다. 이러한 강력한 도구를 능숙하게 다룰 수 있도록 계속 연습해 보십시오!
자주 묻는 질문
“Jenkins를 활용한 자동 배포” 강의는 무료인가요?
네 — “Jenkins를 활용한 자동 배포” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Docker & DevOps Fundamentals 강의 전체를 잠금 해제할 수 있습니다. Docker & DevOps Fundamentals 강의에는 총 4개의 강의가 포함되어 있습니다.
“Jenkins를 활용한 자동 배포”에서 뭘 배우나요?
Jenkins에서 Docker 컨테이너를 대상 환경에 배포하는 CI/CD 파이프라인을 만듭니다. 브라우저에서 직접 실행하는 실습 코드로 Docker & DevOps Fundamentals을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Docker & DevOps Fundamentals을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Docker & DevOps Fundamentals은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“Jenkins를 활용한 자동 배포” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Docker & DevOps Fundamentals 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Docker & DevOps Fundamentals 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- Jenkins 소개
- Jenkins로 Docker 이미지 빌드하기
- Jenkins를 활용한 자동 배포
- Jenkinsfile을 활용한 코드형 Jenkins Pipeline