Azure: Function App에 Docker로 커스텀 이미지 올리기

1 분 소요


참고한 문서

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에서 업데이트하면 끝이다.



생각보다 간단하구나


댓글남기기