본문으로 바로가기
반응형

본 포스팅은 도커 컨테이너를 AWS ECS에 업로드하는 방법에 대한 포스팅이다.

하지만 클러스터, 작업 정의등에 대한 자세한 설명은 하지 않을 것이므로 관련 내용은

직접 찾아보길 바란다.

예제는 간단한 플라스크 어플을 띄우는 것으로 한다.

먼저 아래의 내용을 통해 Dockerfile을 만든다.


FROM python:3.6.5
MAINTAINER hide@hides.kr

ADD . /home/hide
WORKDIR /home/hide
RUN pip install -r requirements.txt
EXPOSE 80
CMD ["python3", "manage.py"]

간단하게 현재 폴더의 내용을 /home/hide로 복사하고 라이브러리를 설치 후

80포트를 개방, 플라스크 서버를 실행하는 명령어를 정의해놓은 부분이다.

이제 manage.py파일을 생성하고 아래의 내용을 채워넣는다.


from flask import Flask


app = Flask(__name__)

@app.route('/')
def index():
return 'Hello world'

if __name__ == '__main__':
app.run(host='0.0.0.0', port=80)


참고로 나는 파이썬 3.6.5버전을 사용하고 있으므로 docker images를 입력해보면,


python                                                        3.6.5               9a58cce9b09f        6 months ago        912MB


위처럼 기본적으로 파이썬 이미지가 설치되어 있는 상황이다.

이미지 파일이 없다면 도커 허브에서 pull해온 후 작업을 진행해야 한다.

이제 AWS콘솔로 들어가서 ECR쪽으로 들어간다.


오른쪽에 있는 리포지토리 생성 버튼을 누른다.


원하는 이름을 채워넣고 리포지토리 생성 버튼을 누른다.

다음으로 아래의 명령어를 입력하여 ecr에 로그인한다.


aws ecr get-login --region ap-northeast-2 --no-include-email


그러면 위와 같이 긴 문자열들이 나올텐데 복사하여 그대로 터미널에 입력한다.

정상적으로 로그인이 완료됐다면, Login Succeeded라고 나온다.

이제 우리의 도커파일을 빌드하고 해당 이미지를 ECR에 업로드해야한다.

먼저 도커 파일을 빌드한다.


docker build -t hide .


위에서 hide부분에 굵게 표시해놨는데, 여기에 원하는 이름을 적으면 해당 이름으로 이미지가 생성된다.

이제 이 이미지를 ECR에 푸시한다.

ECR의 주소는 위에서 리포지토리를 생성했다면, URI에 나와있다.


docker tag 이름:latest ECR주소

docker push ECR주소


위 명령어로 차례대로 입력하면


이렇게 빌드된 이미지의 업로드가 진행된다.

완료된 후 ECR에 들어가보면 정상적으로 업로드가 됐음을 확인할 수 있다.

다음으로 Cluster를 생성해줘야 한다.


왼쪽 메뉴 중 Clusters로 들어간다.


시작하기를 누른다.


이미지 부분에서 custom을 고르고 오른쪽에 있는 작업 정의의 이름입니다 버튼을 누른다.


이미지에 ECR로 들어가서 아까 우리가 푸시한 이미지의 주소를 적어주고

메모리 제한은 128정도로, 포트 매핑은 필요한 포트를 적어준다.

그리고 오른쪽 아래에 있는 업데이트 버튼을 누른다.


아래쪽에 있는 다음 버튼을 누른다.


다음 버튼을 누른다.


다음 버튼을 누른다.

그리고 마지막으로 생성 버튼을 누른다.


이런식으로 나오면서 서비스가 올라간다.

3분정도 기다려야 한다.

모든게 완료되면 다시 ECS로 들어간다.


자신이 생성한 이름으로 클러스터가 생성되었을것이다.

클릭해서 들어간다.


작업 탭으로 이동하고 053~이런식으로 된 문자열을 클릭한다.


네트워크쪽에 ENI Id가 있고 클릭할 수 있을텐데 클릭한다.


그럼 위처럼 서비스가 돌아가는 모습을 볼 수 있고 IPv4에 퍼블릭 IP를 찾을 수 있다.

해당 주소로 들어가면 정상적으로 서비스가 뜬 모습을 확인할 수 있다.


참고로 삭제는 그냥 클러스터를 삭제하면 된다.

반응형