로컬에서 개발한 소스를 EKS에 배포하기 위해서는, ECR(Elastic Container Registry)에 먼저 PUSH를 해줘야 한다.

먼저, ECR 서비스에서 aggregate 별 repository를 생성하자.

 

 

ECR 에 Repository 생성

 

aws 콘솔에 접속한다.

https://aws.amazon.com/

ECR 서비스 접속

[서비스] 탭에서 ECR을 검색한 후 [Elastic Container Registry]서비스를 클릭한다.

 

레포지토리 생성

우측 상단 [레포지토리 생성] 버튼을 누른다.

 

리포지토리 생성

리포지토리 이름 aggregate 별로 구분 가능한 네이밍을 한다.

[리포지토리 생성] 버튼을 눌러 생성을 완료한다.

 

리포지토리 리스트

위와 같은 방법으로, aggregate 별 리포지토리 생성을 진행한다.

 

 

이제 본격적으로 프로젝트 파일을 도커라이징하고 ECR(Elastic Container Registory)에 PUSH 해보도록 하

mvn 명령어를 찾을 수 없음

기 전에, 도커라이징을 하기 위해서는 maven 툴이 필요하다.

 

 

MAVEN 설치

아래 주소로 접속하여

maven.apache.org/download.cgi

 

maven 다운로드 홈페이지

Files 항목에서

Binary 파일 다운로드

[Binary 파일] 다운로드한다.

 

maven 파일 경로

다운로드한 zip파일을 풀어 적당한 경로에 넣어주고

 

환경 변수에 추가

[환경변수]에 추가해준다.

변수 이름: MAVEN_HOME

변수 값: C:\maven\apache-maven-3.6.3-bin\apache-maven-3.6.3

 

Path에 maven 변수 추가

추가한 변수를 [Path] 경로에 넣어준다.

 

mvn -version

이제 cmd 아무 경로에서나 mvn 명령어를 실행할 수 있다.

 

 

패키지 파일 생성

이제, maven으로 패키지파일을 생성하자.

aggregate 경로로 이동

aggregate 폴더로 이동한 한다.

 

폴더 파일 정보

mvn package

명령을 수행한다.

 

패키지 파일 생성 중

뭔가가 진행되고 난 후

 

target 폴더

[target] 폴더를 들어가보면,

[SNAPSHOT.jar] 파일이 생긴 것을 알 수 있다.

(패키지 파일)

 

위와 같은 작업을 aggregate 별로 반복해준다.

 

패키지 파일 생성이 완료가 되면 이제 도커라이징을 할 수 있다.

그런데, docker 명령어가 수행이 되질 않을 것이다.

docker 데몬을 먼저 실행해야 한다.

 

 

Docker 설치

docker 데몬 실행을 위해, docker를 먼저 설치한다.

docker 설치 방법은 OS마다 다른데,

windows7에서도 설치는 가능하지만 VM위에서만 작동하여, 사용이 매우 번거롭다.

(나도 windows7에서 설치 후 실행하다가, 불편함 및 에러가 많아 windows10으로 실행 환경을 바꿨다.)

windows10 기준으로 설명한다.

 

아래 주소로 접속한다.

hub.docker.com/editions/community/docker-ce-desktop-windows/

docker 다운로드 페이지
Get Docker

우측 중앙 [Get Docker] 버튼을 눌러 다운로드한다.

 

Docker Desktop installer

설치파일을 [관리자 권한]으로 실행한다.

 

Configuration

default 설정으로 [OK]를 누르면 설치가 시작된다.

 

Close and restart

설치가 완료되면, [Close and restart]버튼이 보인다.

누르는 순간 PC가 재시작되니 주의하도록 한다.

 

docker 데몬 실행 중

PC가 재시작 되면 자동으로 Docker 데몬이 구동된다.

 

 

docker build & push

이제 도커 파일을 먼저 build하고, ECR에 push 해보자.

 

아래 작업은 Intellij에서 해도 되고, cmd에서 수행해도 상관없다.

폴더 이동

aggregate 폴더로 이동한다.

 

 

docker build

도커를 build한다.

명령어: docker builid -t [리포지토리 이름]:v1 .

ex) docker build -t 475254874193.dkr.ecr.ap-northeast-2.amazonaws.com/kdh01-gateway:v1 .

가장 뒤에 '.' 을 빼먹으면 안 된다.

 

docker images

빌드가 완료되면

docker images

명령어를 통해

이미지가 생성됐는지 확인한다.

 

docker push 시도

이제 docker push를 시도해보는데,

no basic auth credentails 라는 에러가 발생한다.

ecr에 대한 인증이 안되어 있기 때문이다.

 

ecr 인증은 aws cli 버전에 따라 명령어가 다르다.

cmd에서 

aws cli 버전 확인

aws --version

명령어를 실행했을 때

 

1) 1.x버전일 경우

aws ecr 인증

아래 명령어를 통해 인증키를 획득한다.

aws ecr get-login --region [리전 이름]

ex) aws ecr get-login --region ap-northeast-2

aws ecr 인증

그럼 이미지와 같이, 인증키가 부여가 된다.

이 전체를 드래그 후 복사해서 (docker logn ~~~~ amazonwas.com)

 

복사 붙여넣기

그대로 붙여넣기 한 후,

 

삭제할 부분

이미지에서 상단 빨간 박스부분,

-e none https:// 

를 지워 아래 처럼 텍스트를 수정한다.

 

Login Succeeded

인증 성공했다.

 

2) 2.x버전일 경우

 

아래 명령어를 통해 인증키를 획득한다.

aws ecr get-login-password --region [지역 코드] | docker login --username AWS --password-stdin [Account-ID].dkr.ecp.[지역 코드].amazonaws.com

ex) aws ecr get-login-password --region ap-northeast-2 | docker login --username AWS --password-stdin 052937454741.dkr.ecr.ap-northeast-2.amazonaws.com

 

aws cli 2버전 인증 성공

인증 성공 확인.

 

 

docker push

이제 ecr에 push를 해보자.

명령어: docker push [레포지토리 이름]:v1

ex) docker push 475254874193.dkr.ecr.ap-northeast-2.amazonaws.com/kdh01-gateway:v1

여기에는 '.' 이 없다.

 

드디어 푸시가 완료되었고

 

레포지토리 확인

ecr 해당 레포지토리에 들어가면, push가 정상적으로 이루어졌음을 확인할 수 있다.

+ Recent posts