Azure Container Apps에 Flask or FastAPI web app 배포하기

🌻Truthful·2023년 9월 8일

아래의 코드를 통해 파일을 클론해줍니다.

git clone https://github.com/Azure-Samples/msdocs-python-flask-webapp-quickstart.git

Dockerfile과 .dockerignore 파일 추가하기

Dockerfile은 Docker 이미지를 생성하기 위한 지시사항들을 포함하는 파일입니다.

Docker 파일을 추가한 후에 아래의 내용을 붙여넣기 합니다.

각 줄의 명령어는 이미지를 구축하는 단계를 나타냅니다.

# syntax=docker/dockerfile:1

FROM python:3.11

WORKDIR /code

COPY requirements.txt .

RUN pip3 install -r requirements.txt

COPY . .

EXPOSE 50505

ENTRYPOINT ["gunicorn", "app:app"]

위의 코드는 Dockerfile은 Python 3.11과 필요한 패키지들을 갖춘 이미지를 생성하고, Gunicorn을 사용하여 Flask 또는 FastAPI 앱을 실행하는 방법을 Docker에 지시하는 것입니다.

참고로 Gunicorn은 Python 웹 애플리케이션을 안정적으로 호스팅하고 높은 트래픽을 처리하기 위해 사용하는 웹 서버 중 하나입니다.

.dockerignore 파일도 생성하고 아래의 코드를 넣어줍니다.

.git* 
**/*.pyc 
.venv/ 

.git*: .git으로 시작하는 모든 파일 또는 디렉토리를 무시합니다.

*/.pyc: 프로젝트의 모든 하위 디렉토리에서 .pyc 확장자를 가진 모든 파일을 무시합니다.

.venv/: .venv 디렉토리와 그 내부의 모든 파일 및 폴더를 무시합니다.

이 패턴들은 주로 불필요한 파일 또는 디렉토리를 Git 리포지토리에 커밋하지 않거나 Docker 이미지에 포함시키지 않도록 할 때 사용됩니다.

image 만들고 실행하기

이미지를 빌드해줍니다.

docker build --tag flask-demo .

도커 컨테이너에서 이미지를 실행합니다.

docker run --detach --publish 5000:50505 flask-demo

저 같은 경우에는 5000 포트가 이미 사용중이라는 에러가 떠서 5001로 바꿔서 실행해주었습니다.

docker run --detach --publish 5001:50505 flask-demo

웹 앱 Azure에 배포하기

아래의 코드를 터미널에 입력합니다.

az containerapp up \
  --resource-group web-flask-aca-rg --name web-aca-app \
  --ingress external --target-port 50505 --source .

참고자료: Deploy a Flask or FastAPI web app on Azure Container Apps

profile
"인생의 목적은 타인을 따르는 것이 아니라 자신을 창조하는 것이다."

0개의 댓글