본문 바로가기

CICD/ECS

ECS CICD Automation - 2. Docker 설치 및 Docker Image 생성

EC2에서 세팅된 젠킨스 서버를 그대로 사용하도록 하겠습니다.

 

먼저, 젠킨스 서버에서 ECR에 대해 pull push를 모두 할 수 있어야 하기 때문에, 해당 IAM Role을 추가해주겠습니다.

 

 

물론 더 상세하게 쪼개서 Policy를 만든 다음, 권한을 주시는게 가장 좋습니다.


이제 젠킨스 서버에서 다음 쉘 스크립트를 수행해서 도커를 깔아주도록 하겠습니다.

 

sudo amazon-linux-extras install -y epel
sudo amazon-linux-extras install -y docker
sudo service docker start
sudo usermod -aG docker $USER
docker info

 

docker 명령어를 sudo 없이 사용하기 위해 위에 명령어를 쳐도 바로 적용되지 않을 경우 다시 재접속 해주시면 됩니다.

이제 제가 만든 기본 베이스 이미지를 받도록 하겠습니다.

 

만약 이 이미지가 마음에 안드실 경우 원하시는 이미지를 가지고 세팅하시면 됩니다.

저는 알파인 이미지에 java python등 기본적으로 필요하다고 생각되는 것들을 설치해두었습니다.

 

docker pull camouflage129/base:0.1

아래와 같이 정상적으로 이미지가 받아졌다면, 이제 ECR로 가서 Base Repository를 하나 만들어줍니다.

이제 푸시 명령에서 로그인 후, 태그를 달아주고 푸시해주도록 하겠습니다. 저는 아래와 같은 명령어를 수행합니다.

$(aws ecr get-login --no-include-email --region ap-northeast-2)
docker tag camouflage129/base:0.1 account_number.dkr.ecr.ap-northeast-2.amazonaws.com/base:latest
docker push account_number.dkr.ecr.ap-northeast-2.amazonaws.com/base:latest

정상적으로 베이스 이미지가 만들어졌습니다.

 

이제 이 이미지에 빌드 된 Jar file을 ADD하여 이미지를 생성해서 ECR에 푸시해준 후,

 

해당 이미지를 가지고 ECS에서 서비스하면 되겠습니다.


이제 서비스를 하려고 하는 이미지를 만들어 보도록 하겠습니다.

 

전에 EC2 CICD에서 성공했던 Jar파일을 젠킨스 서버로 가지고 와서 도커파일을 만들어 이미지를 만든 후 ECR로 푸시해주겠습니다.

 

s3에서 copy해온 후 같은 경로에 다음과 같이 도커파일을 작성해주도록 하겠습니다.

FROM 218803208705.dkr.ecr.ap-northeast-2.amazonaws.com/base:latest
ADD cb-test-api.jar /home/cb-test-api.jar
CMD nohup java -jar /home/cb-test-api.jar 1> /dev/null 2>&1
EXPOSE 9000

이제 ECR에서 api 레파지토리를 만들어 준 후 푸시 명령을 쭉 수행해주시면 됩니다.

이제 ECS Cluster 구성과 젠킨스 파이프라인, 코드디플로이 작업이 남았습니다.

 

다음 포스트부터는 각 구성들을 하나씩 해보도록 하겠습니다.