Azure: Function App에 Docker로 커스텀 이미지 올리기
참고한 문서
Azure 문서: Create a function on Linux using a custom container
Windows PowerShell을 관리자 권한으로 실행 후 거기서 커맨드를 입력할 것이기 때문에
Auzre CLI
를 설치해둬야 함
로그인
Azure 로그인
az login
애져 로그인 하기~~
Docker 로그인
$acr_id = "acr이름.azurecr.io"
리소스 그룹에서 도커를 올릴 Container Registry를 생성하자
컨테이너 레지스트리에서 로그인 서버
로 acr이름.azurecr.io
형태로 나오는데, 자주 쓰일 거니까 이걸 일단 저장해두자
docker login $acr_id
해서 Username
, Password
에 뭘 쳐야 하냐면
컨테이너 레지스트리에 가서 설정
- 액세스 키
의 관리 사용자를 ON 하고, 거기의 사용자 이름과 패스워드를 복사해서 입력하면 된다
unauthorized: authentication required, visit https://aka.ms/acr/authorization for more information.
근데 이런 에러 메시지가 나올 수 있다
그냥 웹에서 설정 바꾼 게 반영이 아직 안 된 것일 수 있다. 조금 있다 다시 시도하면 잘 된다
Docker 빌드
cd 빌드할폴더경로(Dockerfile 파일이 있는 곳)
docker build --tag $acr_id/도커이름:v1.0.0 .
$acr_id
에 빌드해주기~~ 태그는 첫 버전이므로 v1.0.0
로 붙임
docker push $acr_id/도커이름:v1.0.0
리포지토리에 푸시합니다~
Azure 포탈에서 컨테이너 레지스트리에 가서 서비스
- 리포지토리
에 가면 푸시된 도커를 태그에 따라 볼 수 있음!!
Function App 만들어서 이미지 deploy 하기
$rg = "리소스그룹이름"
$stor = "스토리지이름"
$plan = "생성할플랜이름"
$fun = "생성할함수이름"
현재 리소스그룹과 스토리지는 포탈에 있는 상태라 상정하고 만들기는 건너뜁시당
Plan 생성
az appservice plan create --name $plan --resource-group $rg --sku 플랜종류 --is-linux
앱 서비스 플랜을 생성합니다
학생용 계정은 12달 100 달러인가 무료로 쓸 수 있음~~
12달 지나도 학생이면 연장도 되는 것으로 알고 있다
Function App 생성
az functionapp create --resource-group $rg --os-type Linux --plan $plan --deployment-container-image-name $acr_id/도커이름:v1.0.0 --name $fun --storage-account $stor --docker-registry-server-user 사용자이름 --docker-registry-server-password 패스워드
이제 함수 앱을 생성함!!
사용자 이름과 패스워드는 아까 컨테이너 레지스트리에 가서 설정
- 액세스 키
의 관리 사용자를 ON 해서 받고, 도커 로그인 할 때도 썼던 그 사용자 이름과 패스워드
참고: 앱 서비스 플랜이 F1(무료)인 경우 제약이 있어 종류에 따라 에러가 뜰 수 있음
조금 끊어서 보면
상세
az functionapp create --resource-group $rg
$rg
리소스 그룹에 함수 앱을 생성하세요
--os-type Linux
--plan $plan
os 타입은 리눅스 쓰고 플랜은 $plan
으로 해요
--deployment-container-image-name $acr_id/msdocker:v1.0.0
올릴 컨테이너 이미지 이름은 $acr_id/도커이름:v1.0.0
얘에요
--name $fun
--storage-account $stor
함수 앱 이름은 $fun
이고 스토리지는 $stor
랑 연결해요
--docker-registry-server-user 사용자이름
--docker-registry-server-password 패스워드
도커 로그인 인증 해요
함수 업데이트
이제 함수 앱을 업데이트할 때는 어떡할까
docker build --tag $acr_id/도커이름:새태그 .
docker push $acr_id/도커이름:새태그
az functionapp config container set -n 함수앱이름 -g 리소스그룹이름 --docker-custom-image-name $acr_id/도커이름:새태그
도커 빌드하고 푸시하고 Azure에서 업데이트하면 끝이다.
생각보다 간단하구나
댓글남기기