Docker File을 이용하여 Docker image를 빌드하고, Elastic Container Registry(이하 ECR)에 Push할 것이다.
1. Private ECR Create & IAM
ECR Public Registry vs Private Registry
ECR에는 Public Registry와 Private Registry가 존재한다. 둘의 차이점은 아래와 같다
Public Registry의 접근이 권한과 상관 없이 자유롭다. 하지만 그에 반해 Private Registry는 권한이 있는 사용자만 접근이 가능하며, ECR의 경우는 IAM 권한을 통해 접근을 제어한다.
AmazonEC2ContainerRegistryFullAccess 를 할당한 Role 혹은 IAM User를 만들어 적용한다.
2. Application Code & Dockerfile
Application Code : app.py
from flask import *
app = Flask(__name__)
@app.route('/')
def index():
color = request.args.get('color')
return jsonify({'input_color':f'{color}'})
@app.route('/info')
def info():
return jsonify({'info':'output is your input'})
@app.route('/health')
def health():
return jsonify({'health':'up'})
app.run(host='0.0.0.0', port=5000)
Dockerfile
FROM centos:7
RUN yum install -y python3
RUN pip3 install flask
COPY . /app
WORKDIR /app
EXPOSE 5000
ENTRYPOINT python3 app.py
3. Dockerfile build & ECR Login
# ECR Login
aws ecr get-login-password --region <region> | docker login --username AWS --password-stdin <aws_account_id>.dkr.ecr.region.amazonaws.com
# Docker Image Build & Push
docker build -t <aws_account_id>.dkr.ecr.ap-northeast-2.amazonaws.com/wsi-repo:api_server .
docker push <aws_account_id>.dkr.ecr.ap-northeast-2.amazonaws.com/wsi-repo:api_server
'IT Study > AWS & Server, Network' 카테고리의 다른 글
[web] redis를 flask 세션 스토리지로 활용 (0) | 2022.09.04 |
---|---|
[AWS] ECS(Elastic Container Serivce)란? (2) | 2022.07.18 |
2021 전국기능경기대회 클라우드컴퓨팅 - 1과제 (0) | 2022.02.16 |
[Linux] 나를 위한 tmux 핵심 사용법 (0) | 2022.01.14 |
[Linux] ssh key pair 추가, 변경 (0) | 2021.12.21 |