개요
이 튜토리얼에서는 MongoDB Atlas 사용하는 Flask 애플리케이션 컨테이너화하여 Azure Container Apps에 배포 방법을 보여줍니다. Azure Container Apps는 인프라를 관리 할 필요 없이 컨테이너화된 애플리케이션의 배포 및 관리를 간소화하는 서버리스 플랫폼 입니다.
튜토리얼
이 튜토리얼에서는 다음 작업을 완료하는 방법을 보여줍니다.
전제 조건 확인
Flask 애플리케이션 설정
Dockerfile 만들기
Azure Container Registry 만들기
Docker 이미지 빌드 및 푸시
Azure 컨테이너 앱 만들기 및 배포
전제 조건 확인
시작하기 전에 다음 사전 요구 사항을 완료하세요.
GitHub리포지토리 에서 Flask 및 MongoDB 애플리케이션 만들기
Python 3.9 이상 설치
Postman Desktop 또는 다른 API 테스트 도구 설치
또한 이 튜토리얼을 사용하려면 활성 클러스터 가 있는 MongoDB Atlas 계정과 Microsoft Azure 구독 필요합니다.
Flask 애플리케이션 설정
다음 명령을 실행 하여 Flask 애플리케이션 리포지토리 복제합니다.
git clone https://github.com/mongodb-developer/atlas-flask-azure-demo
Atlas UI 사용하여 bookshelf라는 데이터베이스 에 books 컬렉션 만듭니다. 다음 샘플 문서를 가이드 로 사용하여 컬렉션 에 일부 문서를 만듭니다.
{ "book": "The Great Gatsby", "pages": 180, }, { "book": "Slaughterhouse-Five", "pages": 215, }, { "book": "If Beale Street Could Talk", "pages": 197, }
애플리케이션 시작하려면 작업 디렉토리 로 이동하여 다음 명령을 실행 .
flask run
브라우저 또는 API 테스트 도구를 사용하여 /books 엔드포인트에 액세스 하여 생성한 문서를 조회 .
Dockerfile 만들기
Dockerfile에는 Docker 이미지를 빌드 하는 명령이 포함되어 있습니다. 작업 디렉토리 에 이라는 파일 만든 다음 이 파일에 Dockerfile 다음 콘텐츠를 추가합니다.
FROM python:3.9-slim-buster WORKDIR /azurecontainerappsdemo COPY ./config/requirements.txt /azurecontainerappsdemo/ RUN pip install -r requirements.txt COPY . /azurecontainerappsdemo/ ENV FLASK_APP=app.py EXPOSE 5000 CMD ["flask", "run", "--host=0.0.0.0"]
requirements.txt 파일 config 라는 새 폴더로 이동하여 빌드 프로세스 중에 Docker 해당 파일을 찾고 복사할 수 있도록 합니다.
이 Dockerfile은 다음 작업을 수행합니다.
python:3.9-slim-buster을 기본 이미지로 사용합니다.작업 디렉토리 설정
Python 종속성 복사 및 설치
애플리케이션 파일 복사
포트 5000노출
모든 네트워크 인터페이스에서 연결을 허용하도록 Flask를 구성합니다.
app.py 파일 하단에 다음 코드를 추가하여 모든 네트워크 인터페이스에서 Flask가 실행되도록 합니다.
if __name__ == '__main__': app.run(host='0.0.0.0', debug=True)
Azure 에 배포 전에 Docker 이미지가 로컬에서 작동하는지 확인할 수 있습니다. 다음 명령을 실행 하여 이미지를 빌드합니다.
docker build --tag azurecontainerappsdemo .
그런 다음, 다음 명령을 실행 하여 MongoDB 연결 문자열 로 컨테이너 실행 .
docker run -d -p 5000:5000 -e "CONNECTION_STRING=<MONGODB_ATLAS_URI_STRING_HERE>" azurecontainerappsdemo
컨테이너 실행 되면 브라우저의 http://localhost:5000 에서 애플리케이션 에 액세스 .
Azure Container Registry 만들기
Azure Portal에 로그인하고 Container Registry 서비스로 이동합니다. Create 을 클릭하고 레지스트리에 대해 다음 설정을 지정합니다.
리소스 그룹: 리소스 그룹 의 이름
레지스트리 이름: 로그인 URL 역할을 합니다.
위치: 레지스트리 위치
참고
컨테이너 앱을 만들 때 동일한 리소스 그룹 및 위치 값을 사용해야 합니다.
Review and Create를 클릭합니다.
배포서버 완료되면 Visual Studio Code를 엽니다. Docker 확장을 설치해야 합니다.
Registries(으)로 이동하여 Azure 계정에 로그인한 다음 레지스트리를 연결합니다.
다음 명령을 실행 하여 Azure Container Registry에 로그인합니다.
docker login <azure registry url>
팁
사용자 이름 과 비밀번호는 Container Registry의 Access Keys 섹션에서 찾을 수 있습니다. 자격 증명 보려면 Admin Access 을(를) 활성화합니다.
중요
Windows 사용하는 경우 오류를 방지하려면 터미널에 자격 증명 마우스 오른쪽 버튼으로 클릭하여 붙여넣습니다.
Docker 이미지 빌드 및 푸시
다음 단계를 완료하여 Docker 이미지를 빌드 하고 Azure Container Registry에 푸시합니다. 운영 체제 및 아키텍처에 해당하는 탭 선택합니다.
다음 명령을 실행 하여 Buildx를 설치합니다.
docker buildx install
다음 명령을 실행 하여 Buildx를 활성화합니다.
docker buildx create --use
다음 명령을 실행 하여 linux/amd64 플랫폼의 이미지를 빌드합니다.
docker buildx build --platform linux/amd64 --t <azure registry url>/<image name>:<image tag> --output type=docker .
다음 명령을 실행 하여 이미지를 Azure Container Registry에 푸시합니다.
docker push <azure registry url>/<image name>:<image tag>
다음 명령을 실행 하여 이미지를 빌드합니다.
docker build --t <azure registry url>/<image name>:<image tag> --output type=docker .
다음 명령을 실행 하여 이미지를 푸시합니다.
docker push <azure registry url>/<image name>:<image tag>
다음 명령을 실행 하여 이미지를 빌드합니다.
docker build --t <azure registry url>/<image name>:<image tag> .
다음 명령을 실행 하여 이미지를 푸시합니다.
docker push <image name>:<image tag>
푸시가 성공했는지 확인하려면 Azure Portal에서 Container Registry로 이동한 다음 Repositories 을 클릭하여 이미지를 확인합니다.
Azure 컨테이너 앱 만들기 및 배포
Azure Portal에서 Container Apps 서비스로 이동하여 Create를 클릭합니다.
Basics 섹션에서 컨테이너 앱에 대한 다음 설정을 구성합니다.
구독: Azure 구독
리소스 그룹: Container Registry에 사용한 것과 동일한 리소스 그룹
컨테이너 앱 이름
리전: Container Registry에 사용한 것과 동일한 리전
중요
첫 번째 컨테이너 앱인 경우 앱 만들 때 환경을 만듭니다. 컨테이너 앱 환경은 동일한 가상 네트워크에 있는 컨테이너 앱에 대한 보안 경계를 만듭니다.
App Settings 섹션에서 다음 설정을 구성합니다.
선택 취소 Use quickstart image
이미지 소스로 Azure Container Registry 을(를) 선택합니다.
레지스트리, 이미지 및 태그를 지정하다 정보를 입력합니다.
MongoDB Atlas 연결 문자열 이라는 환경 변수로 CONNECTION_STRING 추가합니다.
수신을 활성화하고 다음 수신 설정을 구성합니다.
수신 트래픽: 어디에서든 트래픽 허용
수신 유형: HTTP
운송: 자동
안전하지 않은 연결: 허용
대상 포트: 5000
Review and Create를 클릭합니다. 배포서버 완료되면 Go to Resource을 클릭한 다음 Application URL 를 클릭하여 배포된 애플리케이션 에 액세스 .
URL 에 /books 을(를) 추가하면 MongoDB Atlas 데이터베이스 에서 이전에 추가한 책을 볼 수 있습니다.
추가 리소스
이 튜토리얼의 전체 코드를 보려면 GitHub의 azurecontainerappdemo 리포지토리 참조하세요.
Azure Container Apps에 대해 자세히 학습 Microsoft 웹사이트 에서 Azure Container Apps 설명서를 참조하세요.