이 실습은 DevOps[1]에서 이어지는 것이므로 DevOps[1] github actions으로 개발주기 자동화 를 먼저 수행하고 와주세요 😄


이번 실습의 목표는 다음과 같습니다.

목표 : Github Actions를 통해 flask app의 Azure Container Instances에 대한 단일 컨테이너 배포 자동화

앞서 구성했던 flask app의 배포를 자동화합니다.

1. flask app을 구동하기 위한 docker image 생성 및 테스트

이 또한 새로 branch를 만들어 작업합니다. (앞의 글에서 설명한 부분이기에 구체적인 설명은 생략하겠습니다.)

이 실습에서 사용한 Dockerfile은 다음과 같습니다.

FROM ubuntu:20.04

COPY  . .

LABEL "MAINTAINER"="changjoy <[email protected]>"

RUN apt-get update && apt-get upgrade -y
RUN apt install curl -y
RUN apt install python3-pip -y
RUN pip3 install flask 
RUN pip3 install pillow 

EXPOSE 80

ENTRYPOINT python3 ./core_codes/app.py

먼저 COPY . .로 현재 Dockerfile이 있는 파일을 docker image의 .로 복사한 다음

ubuntu에서 코드 실행을 위한 패키지 (flask, pillow)를 설치하고 flask 앱 실행 기본 포트인 80을 접근할 수 있도록 열어줬습니다.

그리고 ENTRYPOINT로 컨테이너 생성시 실행될 명령을 설정해주었는데요, flask app 실행 코드인 app.py파일을 실행하도록 했습니다.

이후 docker build . -t [이미지이름] 으로 도커이미지를 만들어주고 다음 명령으로 컨테이너를 실행해줍니다.

docker run -it --name [컨테이너이름] --ipc=host -p 80:80 [이미지이름]

Localhost:80으로 접속했을 때 다음과 같이 뜨면 앱이 잘 구동된 것입니다 😊

Untitled

2. Azure Container Instance (ACI) 에 빌드 / 배포 자동화 workflow 등록