JSCODE Logo
JSCODE 박재성JSCODE 제이온JSCODE 시니
과외유튜브블로그후기
완강 후기 이벤트블로그 리뷰 이벤트AWS SAA 합격 후기 이벤트
회사명 : JSCODE대표 : 박재성사업자 등록번호 : 244-22-01557통신판매업 : 제 2023-인천미추홀-0381 호

서울특별시 구로구 경인로 20가길 11(오류동, 아델리아)

Copyright ⓒ 2026 JSCODE - 최상위 현업 개발자들의 프로그래밍 교육 All rights reserved.

이용약관개인정보처리방침

Jenkins를 활용한 CI/CD 입문 (with.AWS)

Jenkins 기본개념과 환경설정

[보충자료] CI/CD를 왜 배우는 걸까?
Jenkins란 무엇일까?
[실습] Docker 설치
[실습] Docker를 활용한 Jenkins 설치하기
[실습] Jenkins 필수 플러그인 설치

Jenkins Job : Freestyle, Pipeline

Jenkins Job의 유형 : Freestyle vs Pipeline
[실습] Freestyle 프로젝트 생성하기
[실습] Jenkins 타임존 변경하기
[실습] Pipeline 프로젝트 생성하기
Pipeline 프로젝트를 실무에서 사용해야 하는 이유

Jenkins 실무의 핵심 Pipline 프로젝트

[실습] Pipeline Script 작성 / Workspace
[실습] 빌드 성공 시 결과물 저장하기
[실습] Pipeline의 Test Stage 생성하기
[실습] Pipeline에서 변수를 정의하는 방법

Jenkins를 활용한 CI 구현

DevOps란 무엇일까?
CI란 무엇일까?
[실습] Node 프로젝트 준비하기
[실습] Docker를 사용하여 Jenkins에서 빌드해보기
[실습] Jenkins와 Git Repository 연결하기
[실습] Jenkinsfile로 Build 구현하기
[퀴즈] Jenkins로 Test 단계 추가하기
[실습] Jenkins에서 JUnit 테스트 보고서 게시하기
[실습] Playwright를 활용한 E2E 테스트
[실습] Playwright 테스트 보고서 HTML로 발행하기

Jenkins를 활용한 CD 구현

CD란 무엇일까?
[보충자료] Netlify 계정 생성하기
[실습] Netlify 수동 배포 및 Netlify CLI 설치하기
[실습] Netlify 환경 변수 추가하고 Token 발급하기
[실습] Pipeline 프로젝트에서 자격증명 추가하여 실제 배포하기
[보충자료] 크론(Cron) 표기법 가이드
[실습] Build Trigger로 주기적으로 자동 빌드하기
[실습] 배포 이후 테스트 자동화 구축하기
[실습] 배포를 테스트하기 위한 스테이징 환경 구축
[실습] 프로덕션 환경 배포 전 배포 Approval 스텝 추가하기
[퀴즈] 기존 프로젝트에 Approval 스탭 추가하기

AWS S3와 Jenkins를 활용한 CD 구현

[보충자료] AWS 계정 생성
[보충자료] S3란? / S3를 왜 사용하는걸까? / 현업에서 S3를 많이 사용할까?
[실습] S3 버킷 생성하기
[실습] AWS CLI를 사용하는 이유 / AWS CLI 설치방법
[실습] AWS CLI로 S3 버킷 목록 가져오기
[실습] IAM에서 액세스 키 발급받기
[실습] Jenkins에 AWS 자격증명 추가하기 / AWS CLI 환경 변수 구성
[실습] Jenkins를 활용하여 S3에 파일 업로드하기 / 버킷명 환경 변수로 등록하기
[실습] Jenkins와 S3를 활용한 정적 웹사이트 호스팅하기
[실습] AWS CLI로 S3 파일 동기화하기
[보충자료] 비용 나가지 않게 S3 깔끔하게 종료하기

Docker, AWS ECS와 Jenkins를 활용한 CD 구현

ECS란 무엇일까? / ECS의 구성 요소
[실습] ECS 클러스터 생성하기
[실습] Nginx 기반 ECS 테스크 정의 생성하기
[실습] ECS 보안 그룹, 인바운드 규칙 설정하기
[실습] 새로운 버전의 Docker 컨테이너 배포하기
[실습] IAM 에서 권한 부여하기
[실습] ECS 서비스 업데이트하기
[실습] 프로젝트 코드 고도화하기 / JSON 프로세서 jq
[실습] AWS 대기 명령 services-stable
ECS 배포 아키텍처 그림으로 이해해보기
[실습] Docker 이미지 생성하기
[실습] Docker 이미지 태그 변경하기
[실습] ECR이란 무엇일까? / 비공개 리포지토리 생성하기
[실습] ECS에 수동으로 배포하기
[실습] sed 명령어를 이용한 텍스트 치환 / ECS에 자동으로 배포하기
[보충자료] 비용 나가지 않게 ECS, ECR, Netlify 종료하기
← 블로그 목록으로 돌아가기

[실습] ECR이란 무엇일까? / 비공개 리포지토리 생성하기

JSCODE 시니
JSCODE 시니
2026. 04. 09.
author
JSCODE 시니
category
Jenkins CI/CD
createdAt
Apr 9, 2026 12:57 PM
isPublic
isPublic
series
Jenkins를 활용한 CI/CD 입문 (with.AWS)
slug
what-is-aws-ecr-private-repository-jenkins
type
post
updatedAt

✅ 1. ECR이란 무엇일까?

  • ECR은 Elastic Container Registry의 약자이다.
  • ECR은 쉽게 말해서 AWS가 운영하는 비공개 도커 이미지 저장소라고 생각하면 된다.
 
 

✅ 2. 비공개 리포지토리 생성하기

notion image
  • ECR 서비스로 접속한다.
notion image
  • 리포지토리 생성 버튼을 클릭한다.
notion image
  • 리포지토리 이름은 우리의 APP_NAME과 동일하게 입력한다.
notion image
  • 생성이 완료 되면 URI 주소를 복사한다.
pipeline { // 전역 에이전트를 사용하지 않음으로써 컨테이너 중첩 방지 agent none environment { REACT_APP_VERSION = "1.0.$BUILD_ID" APP_NAME = 'myjenkinsapp' AWS_DEFAULT_REGION = 'ap-northeast-2' AWS_DOCKER_REGISTRY = '리포지토리 URI 주소' AWS_ECS_CLUSTER = 'punctual-crocodile-2buaov' AWS_ECS_SERVICE_PROD = 'LearnJenkinsApp-Service-Prod' AWS_ECS_TD_PROD = 'LearnJenkinsApp-TaskDefinition-Prod' } stages { stage('Build') { ... 중략 } stage('Build Docker image') { agent { docker { image 'amazon/aws-cli' reuseNode true args "-u root --entrypoint='' -v /var/run/docker.sock:/var/run/docker.sock" } } steps { withCredentials([usernamePassword(credentialsId: 'my-aws', passwordVariable: 'AWS_SECRET_ACCESS_KEY', usernameVariable: 'AWS_ACCESS_KEY_ID')]) { sh ''' yum install -y docker # 애플 실리콘칩(M1,M2 등) 사용자는 해당 옵션 붙이기 docker build --platform linux/amd64 -t $APP_NAME:$REACT_APP_VERSION . # docker build -t $APP_NAME:$REACT_APP_VERSION . docker push $AWS_DOCKER_REGISTRY/$APP_NAME:$REACT_APP_VERSION ''' } } } stage('Deploy to AWS') { ... 중략 } } }
  • 우리가 AWS 자격증명을 Jenkins에 등록했다고 하더라도, ECR에 도커 이미지를 업로드하려면 로그인 인증을 진행해야 한다.
aws ecr get-login-password | docker login --username AWS --password-stdin $AWS_DOCKER_REGISTRY
  • 해당 명령문을 통해 로그인을 진행할 수 있다.
  • 해당 구문을 docker push 전에 추가해준다.
  • 해당 구문까지 추가하여 빌드를 진행해보면, 오류가 나는 것을 확인할 수 있다. 왜 그럴까?
  • IAM 권한이 없기 때문이다. IAM 권한을 부여해보자.(스스로)
 
 

✅ 3. IAM 권한 부여

  • 권한명 : AmazoneEC2ContainerRegistryFullAccess
notion image
  • 권한 부여 후 확인 해보면 로그인이 성공적으로 된 것을 확인 할 수 있다.
notion image
  • ECR 에서도 해당 도커 이미지가 잘 올라와 있는 것을 확인할 수 있다.
 

✅ 4. Tag명 변경

# docker build -t $AWS_DOCKER_REGISTRY/$APP_NAME:$REACT_APP_VERSION .
  • Docker ECR은 같은 원격 저장소에 Push 할 때, 반드시 로컬에 있는 이미지 태그명이 원격주소랑 100% 똑같아야 한다.
  • 해당 부분을 반드시 변경할 것
 
📎
이 글은 Jenkins를 활용한 CI/CD 입문 (with. AWS) 강의의 수업 자료 중 일부입니다.