[Jenkins] Jenkins + Docker + EC2 배포 파이프라인

he2mang·2026년 1월 28일

Jenkins

목록 보기
2/2
post-thumbnail

우리 프로젝트는 쿠버네티스(K8s)의 복잡함 대신 Docker 컨테이너를 활용해 EC2에 직접 배포하는 효율적인 방식을 선택했습니다. K8s 단계가 빠지는 대신 Jenkins가 EC2에 접속해 컨테이너를 교체하는 과정이 추가됩니다.

➡️ (K8s포함된) Jekins 이해하기 _ [Jenkins] CI/CD 도구 젠킨스란?


1. 수정된 전체 흐름 (CI/CD Workflow)

  1. CI (지속적 통합): 코드를 커밋하면 Jenkins가 빌드하고 Docker 이미지를 생성합니다.
  2. Docker Registry Push: 생성된 이미지를 Docker Hub(또는 AWS ECR)에 업로드합니다.
  3. CD (지속적 배포): Jenkins가 EC2 서버에 SSH로 접속하여, 기존 컨테이너를 내리고 새 이미지를 받아 실행합니다.

2. 단계별 상세 프로세스

1️⃣ 이미지 빌드 및 푸시 (Build & Push)

  • Jenkins 내부에서 docker build 명령어로 애플리케이션 이미지를 만듭니다.
  • 빌드된 이미지는 Docker Hub 같은 저장소에 저장합니다. (EC2에서 이 이미지를 당겨와야 하기 때문입니다.)

2️⃣ EC2 접속 (SSH Agent)

  • Jenkins의 SSH Agent 플러그인을 사용하여 우리 프로젝트의 EC2 서버에 원격 접속합니다.

3️⃣ 배포 스크립트 실행 (Deploy)

  • K8s 배포 대신, EC2 서버에서 직접 다음 명령어를 수행하도록 자동화합니다.
  • docker pull [우리_이미지]: 저장소에서 새 버전 가져오기
  • docker stop [기존_컨테이너]: 실행 중인 구버전 중지
  • docker rm [기존_컨테이너]: 구버전 삭제
  • docker run -d [새_이미지]: 새 버전으로 서버 실행

3. K8s 환경과의 차이점

구분K8s 환경EC2 직접 배포
배포 대상K8s 클러스터 (Pod)AWS EC2 인스턴스
관리 도구kubectl, YAML 설정Docker CLI, Shell Script
장점고가용성, 오토스케일링설정이 간편함, 리소스 절약, 직관적임

💡 Insight

쿠버네티스가 없다고 해서 자동화 수준이 낮은 것은 아닙니다. 오히려 프로젝트 규모에 따라 Jenkins와 Docker를 이용한 EC2 자동 배포가 훨씬 빠르고 안정적인 운영 환경을 제공할 수 있습니다. 이제 "코드 한 줄 커밋"으로 실제 서버까지 테스트할 수 있는 환경을 구축할 수 있습니다.

2개의 댓글

comment-user-thumbnail
2026년 1월 29일

기능 자체는 비슷해도 도구가 다양하게 있어서 각자의 요구사항과 필요, 환경에 따라서 적절하게 비교해보고 고를 수 있는게 즁요한거같습니다! 도커와 젠킨스를 함께 사용하는 이유 잘읽고갑니다.

1개의 답글