빠른 시작: 리포지토리에서 Azure Container Apps로 빌드 및 배포
이 문서에서는 선택한 프로그래밍 언어를 사용하여 GitHub 리포지토리에서 Azure Container Apps에 마이크로 서비스를 빌드하고 배포하는 방법을 보여 줍니다. 이 빠른 시작에서는 음악 앨범의 정적 컬렉션을 반환하는 백 엔드 웹 API 서비스를 나타내는 샘플 마이크로 서비스를 만듭니다.
이 샘플 애플리케이션은 두 가지 버전으로 제공됩니다. 한 버전에는 원본에 Dockerfile이 포함된 컨테이너가 포함되어 있습니다. 다른 버전에는 Dockerfile이 없습니다. 소스 코드를 가장 잘 반영하는 버전을 선택합니다. 컨테이너를 처음 사용하는 경우 상단에서 Dockerfile 없음 옵션을 선택합니다.
참고 항목
로컬 파일 시스템에서 이 샘플 애플리케이션을 빌드하고 배포할 수도 있습니다. 자세한 내용은 로컬 소스 코드에서 빌드하고 Azure Container Apps에 애플리케이션 배포를 참조하세요.
다음 스크린샷은 배포하는 앨범 API 서비스의 출력을 보여 줍니다.
필수 조건
이 프로젝트를 완료하려면 다음 항목이 필요합니다.
요건 | 지침 |
---|---|
Azure 계정 | 계정이 없으면 무료 계정을 만듭니다. 계속 진행하려면 Azure 구독에 대한 기여자 또는 소유자 권한이 필요합니다. 자세한 내용은 Azure Portal을 사용하여 Azure 역할 할당을 참조하세요. |
GitHub 계정 | 평가판을 가져올 수 있습니다. |
git | git 설치 |
Azure CLI | Azure CLI를 설치합니다. |
설정
CLI에서 Azure에 로그인하려면 다음 명령을 실행하고 프롬프트에 따라 인증 프로세스를 완료합니다.
az login
최신 버전의 CLI를 실행하고 있는지 확인하려면 업그레이드 명령을 실행합니다.
az upgrade
그런 다음 CLI용 Azure Container Apps 확장을 설치하거나 업데이트합니다.
Azure CLI에서 az containerapp
명령을 실행하거나 Azure PowerShell의 Az.App
모듈에서 cmdlet을 실행할 때 누락된 매개 변수에 대한 오류가 발생하는 경우 최신 버전의 Azure Container Apps 확장이 설치되어 있어야 합니다.
az extension add --name containerapp --upgrade
참고 항목
2024년 5월부터 Azure CLI 확장 기능은 기본적으로 미리 보기 기능을 사용하도록 설정하지 않습니다. Container Apps 미리 보기 기능에 액세스하려면 --allow-preview true
를 사용하여 Container Apps 확장을 설치합니다.
az extension add --name containerapp --upgrade --allow-preview true
이제 현재 확장 또는 모듈이 설치되었으므로 Microsoft.App
및 Microsoft.OperationalInsights
네임스페이스를 등록합니다.
az provider register --namespace Microsoft.App
az provider register --namespace Microsoft.OperationalInsights
환경 변수 만들기
이제 Azure CLI 설정이 완료되었으므로 이 문서 전체에서 사용되는 환경 변수를 정의할 수 있습니다.
bash 셸에서 다음 변수를 정의합니다.
export RESOURCE_GROUP="album-containerapps"
export LOCATION="canadacentral"
export ENVIRONMENT="env-album-containerapps"
export API_NAME="album-api"
export GITHUB_USERNAME="<YOUR_GITHUB_USERNAME>"
이 명령을 실행하기 전에 <YOUR_GITHUB_USERNAME>
을 GitHub 사용자 이름으로 바꿉니다.
다음으로 고유한 컨테이너 레지스트리 이름을 정의합니다.
export ACR_NAME="acaalbums"$GITHUB_USERNAME
GitHub 리포지토리 준비
브라우저 창에서 기본 설정 언어의 GitHub 리포지토리로 이동하고 리포지토리를 포크합니다.
리포지토리를 계정에 포크하려면 앨범 API 리포지토리 상단에 있는 포크 단추를 선택합니다. 그런 다음 리포지토리 URL을 복사하여 다음 단계에서 사용합니다.
브라우저 창에서 기본 설정 언어의 GitHub 리포지토리로 이동하고 분기를 포함하여 리포지토리를 포크합니다.
리포지토리를 계정에 포크하려면 앨범 API 리포지토리 상단에 있는 포크 단추를 선택합니다. buildpack
분기도 포크하려면 "main
분기만 복사"를 선택 취소합니다.
컨테이너 앱 빌드 및 배포
containerapp up
명령을 사용하여 포크된 GitHub 리포지토리에서 첫 번째 컨테이너 앱을 빌드하고 배포합니다. 이 명령은 다음을 수행합니다.
- 리소스 그룹 만들기
- Log Analytics 작업 영역을 사용하여 Container Apps 환경 만들기
- Azure Container Registry 만들기
- 컨테이너 앱을 빌드하고 배포하기 위한 GitHub 작업 워크플로 만들기
- 리소스 그룹 만들기
- Log Analytics 작업 영역을 사용하여 Container Apps 환경 만들기
- 환경의 일부로 기본 레지스트리를 자동으로 만들기
- 컨테이너 앱을 빌드하고 배포하기 위한 GitHub 작업 워크플로 만들기
새 코드를 리포지토리에 푸시하면 GitHub Action은 다음을 수행합니다.
- 컨테이너 이미지를 빌드하고 Azure Container Registry에 푸시합니다.
- 만들어진 컨테이너 앱에 컨테이너 이미지 배포
up
명령은 리포지토리의 루트에 있는 Docker 파일을 사용하여 컨테이너 이미지를 빌드합니다. Dockerfile의 EXPOSE
명령은 대상 포트를 정의합니다. 컨테이너 앱을 빌드하는 데 Docker 파일이 필요하지 않습니다.
- 언어 및 런타임을 자동으로 검색
- 적절한 Buildpack을 사용하여 이미지를 빌드합니다.
- Azure Container Apps 기본 레지스트리에 이미지 푸시
컨테이너 앱은 수신 트래픽에 액세스할 수 있어야 합니다. 들어오는 요청을 수신하려면 포트 8080을 노출해야 합니다.
다음 명령에서 <YOUR_GITHUB_REPOSITORY_NAME>
을 https://github.com/<OWNER>/<REPOSITORY-NAME>
또는 <OWNER>/<REPOSITORY-NAME>
형식의 GitHub 리포지토리 이름으로 바꿉니다.
다음 명령에서 <YOUR_GITHUB_REPOSITORY_NAME>
을 https://github.com/<OWNER>/<REPOSITORY-NAME>
또는 <OWNER>/<REPOSITORY-NAME>
형식의 GitHub 리포지토리 이름으로 바꿉니다. Dockerfile 없이 샘플 원본을 가리키려면 --branch buildpack
옵션을 사용합니다.
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--context-path ./src \
--repo <YOUR_GITHUB_REPOSITORY_NAME>
az containerapp up \
--name $API_NAME \
--resource-group $RESOURCE_GROUP \
--location $LOCATION \
--environment $ENVIRONMENT \
--context-path ./src \
--ingress external \
--target-port 8080 \
--repo <YOUR_GITHUB_REPOSITORY_NAME>
--branch buildpack
--
터미널에 표시된 URL과 사용자 코드를 사용하여 브라우저에서 GitHub 디바이스 활성화 페이지로 이동하고 해당 페이지에 사용자 코드를 입력합니다. 프롬프트에 따라 GitHub 리포지토리에 액세스할 수 있도록 Azure CLI에 권한을 부여합니다.
up
명령은 리포지토리 .github/workflows 폴더에 GitHub 작업 워크플로를 만듭니다. 리포지토리에 변경 내용을 푸시하면 컨테이너 앱을 빌드하고 배포하기 위해 워크플로가 트리거됩니다.
배포 확인
containerapp up
에서 반환된 도메인 이름을 웹 브라우저에 복사합니다. 웹 브라우저에서 URL의 /albums
엔드포인트로 이동합니다.
리소스 정리
프런트 엔드 배포 자습서를 계속 진행하지 않으려면 다음 명령을 사용하여 이 빠른 시작 중에 만들어진 Azure 리소스를 제거할 수 있습니다.
주의
다음 명령은 지정된 리소스 그룹과 그 안에 포함된 모든 리소스를 삭제합니다. 그룹에 이 빠른 시작의 범위를 벗어나는 리소스가 포함되어 있으면 해당 리소스도 삭제됩니다.
az group delete --name $RESOURCE_GROUP
팁
문제가 있나요? Azure Container Apps 리포지토리에서 문제를 열어 GitHub에 알려주세요.
다음 단계
이 빠른 시작을 완료한 후 자습서: Azure Container Apps에서 마이크로 서비스 간 통신으로 계속 진행하여 API를 호출하는 프런트 엔드 애플리케이션을 배포하는 방법을 알아볼 수 있습니다.