컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예
소개
Azure Functions에서 MeCab을 실행하는 예
의 계속입니다만 Azure Storage에 격납하고 있는 유저 사전을 컴파일 하려고 생각해, 시행착오했으므로 정보 공유합니다.
하고 싶은 일
MeCab을 컨테이너화한 이미지를 서버리스로 실행하기 위해
MeCab을 컨테이너화한 이미지를 서버리스로 실행하기 위해
의 구성으로 하기로 했습니다.
MeCab 컨테이너 만들기
dockerfileFROM gcc
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
WORKDIR /src
# mecabダウンロード
RUN wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE" -O mecab-0.996.tar.gz
RUN tar xzvf mecab-0.996.tar.gz
WORKDIR mecab-0.996
# mecab make
RUN set -x && \
./configure --with-charset=utf8 --enable-utf8-only && \
make && \
make check && \
make install
WORKDIR /src
# ipadic ダウンロード
RUN set -x && \
wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM" -O mecab-ipadic-2.7.0-20070801.tar.gz && \
tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
WORKDIR mecab-ipadic-2.7.0-20070801
# ipadic make
RUN set -x && \
./configure --with-charset=utf8 --enable-utf8-only && \
make && \
make install
ENTRYPOINT ["/usr/local/libexec/mecab/mecab-dict-index", "-d", "/usr/local/lib/mecab/dic/ipadic", "-u", "/data/user.dic", "-f", "utf-8", "-t", "utf-8", "/data/user.csv" ]
docker build -t mecabdictindex .
사용자 사전 작성이 목적이므로 ENTRYPOINT에 가치가치에 기재하고 있습니다.
/data가 마운트될 예정의 위치에서/data/user.csv를 입력으로서/data/user.dic를 출력하는 이미지입니다.
이미지는 예로 mecabdictindex라는 이름으로 지정됩니다.
Azure Container Registry(ACR)로 푸시
참고
Azure Container Registry를 사용해 보았습니다.
Azure Container Registry 만들기에서 Docker 이미지 푸시까지
완성된 이미지를 Azure Container Registry로 푸시합니다.
Azure Container Registry를 만들고 관리 사용자를 사용하도록 설정한 상황의 명령 예제입니다.
latest 대신 태그를 지정해야 합니다.
docker login xxx.azurecr.io
docker tag mecabdictindex xxx.azurecr.io/mecabdictindex:v1
docker push xxx.azurecr.io/mecabdictindex:v1
Azure Container Instance(ACI) 만들기
Azure Portal에서는 세세한 설정을 할 수 없으므로 CLI에서 수행합니다.
보기 쉬움을 위해 개행하고 있습니다.
az container create
--resource-group <リソースグループ名>
--name <ACIの名前>
--image <ACRに格納しているイメージ> # 例としてxxx.azurecr.io/mecabdictindex:v1
--registry-login-server <ACRの場所> # 例としてxxx.azurecr.io
--registry-username <ACRの名前> # 例としてxxx
--registry-password <パスワード> # 管理者ユーザを有効にしたときに画面に表示される
--azure-file-volume-account-name <ストレージアカウント名> # マウントしたいFilesを設定している場所の名前
--azure-file-volume-account-key <ストレージアカウントアクセスキー> # ストレージアカウントの[設定][アクセスキー]にある
--azure-file-volume-share-name <Files名>
--azure-file-volume-mount-path <マウント先> # 例として /data
--restart-policy <再起動ポリシー> # 常時起動させるコンテナではないのでNever
설정 항목 너무 많아 싫어집니다만, 주로 이미지의 저장처와 Volume의 마운트처의 설정입니다.
Azure Logic Apps를 만들고 트리거 및 동작 지정
트리거로 Azure Container Instance의 Start가 있으면 좋았습니다.
없기 때문에 Http 액션에서 Rest API로 두드립니다.
Rest API 참조는
Container Groups - Start
에 있습니다.
템플릿이
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}/start?api-version=2018-10-01
이런 느낌이기 때문에 필요한 정보를 바꿔 나갑니다.
조작하고 싶은 ACI의 프로퍼티의 자원 ID를 보면 subscriptions 이후 start전까지의 정보가 실려 있습니다.
이것으로 실행하면 ACI가 기동할까라고 생각했습니다만 안 되었습니다.
권한 부여 필요
Azure Logic Apps에는 Azure Container Instance와 상호 작용할 권한이 없으므로 화가납니다.
Azure Portal에서 권한을 부여합니다.
참고
Azure Logic Apps에서 관리 ID를 사용하여 인증하고 리소스에 액세스
관리 ID 사용
ACI 액세스 제어에 관리 ID 추가
롤(역할)은 여러가지 있습니다만 우선 최상위의 소유자로 해 보았습니다.
Azure Logic Apps 수정
인증 필드에서 관리 ID를 지정하여 새 매개변수 추가 중에서 대상 사용자를 선택합니다.
결과
응답이 204 No Content가 되어 버리고 있습니다만 우선 ENDPOINT에 기재되어 있는 내용은 움직여 주었습니다.
요약
컨테이너화한 콘솔 앱 같은 것을 시작하고 싶었을 뿐인데 상당히 고생했습니다.
원하는 액션이 없을 때는 Azure Function을 묶어 그 안에서 REST API 두드리고 있었는데 인증 주위가 매우 귀찮았습니다.
그런 매니지드 ID를 이용한 인증은 매우 편하고 부담없이 REST API를 시도할 수 있다고 생각했습니다.
컨테이너화한 콘솔 앱 같은 것을 서버리스로 기동하는 방법에 대해 다른 편한 방법등 있으면 교시 바랍니다.
Reference
이 문제에 관하여(컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kwhrkzk/items/009ff7363ffd330c95dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
FROM gcc
ENV LD_LIBRARY_PATH /usr/local/lib:$LD_LIBRARY_PATH
WORKDIR /src
# mecabダウンロード
RUN wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7cENtOXlicTFaRUE" -O mecab-0.996.tar.gz
RUN tar xzvf mecab-0.996.tar.gz
WORKDIR mecab-0.996
# mecab make
RUN set -x && \
./configure --with-charset=utf8 --enable-utf8-only && \
make && \
make check && \
make install
WORKDIR /src
# ipadic ダウンロード
RUN set -x && \
wget "https://drive.google.com/uc?export=download&id=0B4y35FiV1wh7MWVlSDBCSXZMTXM" -O mecab-ipadic-2.7.0-20070801.tar.gz && \
tar xzvf mecab-ipadic-2.7.0-20070801.tar.gz
WORKDIR mecab-ipadic-2.7.0-20070801
# ipadic make
RUN set -x && \
./configure --with-charset=utf8 --enable-utf8-only && \
make && \
make install
ENTRYPOINT ["/usr/local/libexec/mecab/mecab-dict-index", "-d", "/usr/local/lib/mecab/dic/ipadic", "-u", "/data/user.dic", "-f", "utf-8", "-t", "utf-8", "/data/user.csv" ]
docker build -t mecabdictindex .
참고
Azure Container Registry를 사용해 보았습니다.
Azure Container Registry 만들기에서 Docker 이미지 푸시까지
완성된 이미지를 Azure Container Registry로 푸시합니다.
Azure Container Registry를 만들고 관리 사용자를 사용하도록 설정한 상황의 명령 예제입니다.
latest 대신 태그를 지정해야 합니다.
docker login xxx.azurecr.io
docker tag mecabdictindex xxx.azurecr.io/mecabdictindex:v1
docker push xxx.azurecr.io/mecabdictindex:v1
Azure Container Instance(ACI) 만들기
Azure Portal에서는 세세한 설정을 할 수 없으므로 CLI에서 수행합니다.
보기 쉬움을 위해 개행하고 있습니다.
az container create
--resource-group <リソースグループ名>
--name <ACIの名前>
--image <ACRに格納しているイメージ> # 例としてxxx.azurecr.io/mecabdictindex:v1
--registry-login-server <ACRの場所> # 例としてxxx.azurecr.io
--registry-username <ACRの名前> # 例としてxxx
--registry-password <パスワード> # 管理者ユーザを有効にしたときに画面に表示される
--azure-file-volume-account-name <ストレージアカウント名> # マウントしたいFilesを設定している場所の名前
--azure-file-volume-account-key <ストレージアカウントアクセスキー> # ストレージアカウントの[設定][アクセスキー]にある
--azure-file-volume-share-name <Files名>
--azure-file-volume-mount-path <マウント先> # 例として /data
--restart-policy <再起動ポリシー> # 常時起動させるコンテナではないのでNever
설정 항목 너무 많아 싫어집니다만, 주로 이미지의 저장처와 Volume의 마운트처의 설정입니다.
Azure Logic Apps를 만들고 트리거 및 동작 지정
트리거로 Azure Container Instance의 Start가 있으면 좋았습니다.
없기 때문에 Http 액션에서 Rest API로 두드립니다.
Rest API 참조는
Container Groups - Start
에 있습니다.
템플릿이
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}/start?api-version=2018-10-01
이런 느낌이기 때문에 필요한 정보를 바꿔 나갑니다.
조작하고 싶은 ACI의 프로퍼티의 자원 ID를 보면 subscriptions 이후 start전까지의 정보가 실려 있습니다.
이것으로 실행하면 ACI가 기동할까라고 생각했습니다만 안 되었습니다.
권한 부여 필요
Azure Logic Apps에는 Azure Container Instance와 상호 작용할 권한이 없으므로 화가납니다.
Azure Portal에서 권한을 부여합니다.
참고
Azure Logic Apps에서 관리 ID를 사용하여 인증하고 리소스에 액세스
관리 ID 사용
ACI 액세스 제어에 관리 ID 추가
롤(역할)은 여러가지 있습니다만 우선 최상위의 소유자로 해 보았습니다.
Azure Logic Apps 수정
인증 필드에서 관리 ID를 지정하여 새 매개변수 추가 중에서 대상 사용자를 선택합니다.
결과
응답이 204 No Content가 되어 버리고 있습니다만 우선 ENDPOINT에 기재되어 있는 내용은 움직여 주었습니다.
요약
컨테이너화한 콘솔 앱 같은 것을 시작하고 싶었을 뿐인데 상당히 고생했습니다.
원하는 액션이 없을 때는 Azure Function을 묶어 그 안에서 REST API 두드리고 있었는데 인증 주위가 매우 귀찮았습니다.
그런 매니지드 ID를 이용한 인증은 매우 편하고 부담없이 REST API를 시도할 수 있다고 생각했습니다.
컨테이너화한 콘솔 앱 같은 것을 서버리스로 기동하는 방법에 대해 다른 편한 방법등 있으면 교시 바랍니다.
Reference
이 문제에 관하여(컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kwhrkzk/items/009ff7363ffd330c95dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
az container create
--resource-group <リソースグループ名>
--name <ACIの名前>
--image <ACRに格納しているイメージ> # 例としてxxx.azurecr.io/mecabdictindex:v1
--registry-login-server <ACRの場所> # 例としてxxx.azurecr.io
--registry-username <ACRの名前> # 例としてxxx
--registry-password <パスワード> # 管理者ユーザを有効にしたときに画面に表示される
--azure-file-volume-account-name <ストレージアカウント名> # マウントしたいFilesを設定している場所の名前
--azure-file-volume-account-key <ストレージアカウントアクセスキー> # ストレージアカウントの[設定][アクセスキー]にある
--azure-file-volume-share-name <Files名>
--azure-file-volume-mount-path <マウント先> # 例として /data
--restart-policy <再起動ポリシー> # 常時起動させるコンテナではないのでNever
트리거로 Azure Container Instance의 Start가 있으면 좋았습니다.
없기 때문에 Http 액션에서 Rest API로 두드립니다.
Rest API 참조는
Container Groups - Start
에 있습니다.
템플릿이
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerInstance/containerGroups/{containerGroupName}/start?api-version=2018-10-01
이런 느낌이기 때문에 필요한 정보를 바꿔 나갑니다.
조작하고 싶은 ACI의 프로퍼티의 자원 ID를 보면 subscriptions 이후 start전까지의 정보가 실려 있습니다.
이것으로 실행하면 ACI가 기동할까라고 생각했습니다만 안 되었습니다.
권한 부여 필요
Azure Logic Apps에는 Azure Container Instance와 상호 작용할 권한이 없으므로 화가납니다.
Azure Portal에서 권한을 부여합니다.
참고
Azure Logic Apps에서 관리 ID를 사용하여 인증하고 리소스에 액세스
관리 ID 사용
ACI 액세스 제어에 관리 ID 추가
롤(역할)은 여러가지 있습니다만 우선 최상위의 소유자로 해 보았습니다.
Azure Logic Apps 수정
인증 필드에서 관리 ID를 지정하여 새 매개변수 추가 중에서 대상 사용자를 선택합니다.
결과
응답이 204 No Content가 되어 버리고 있습니다만 우선 ENDPOINT에 기재되어 있는 내용은 움직여 주었습니다.
요약
컨테이너화한 콘솔 앱 같은 것을 시작하고 싶었을 뿐인데 상당히 고생했습니다.
원하는 액션이 없을 때는 Azure Function을 묶어 그 안에서 REST API 두드리고 있었는데 인증 주위가 매우 귀찮았습니다.
그런 매니지드 ID를 이용한 인증은 매우 편하고 부담없이 REST API를 시도할 수 있다고 생각했습니다.
컨테이너화한 콘솔 앱 같은 것을 서버리스로 기동하는 방법에 대해 다른 편한 방법등 있으면 교시 바랍니다.
Reference
이 문제에 관하여(컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kwhrkzk/items/009ff7363ffd330c95dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
인증 필드에서 관리 ID를 지정하여 새 매개변수 추가 중에서 대상 사용자를 선택합니다.
결과
응답이 204 No Content가 되어 버리고 있습니다만 우선 ENDPOINT에 기재되어 있는 내용은 움직여 주었습니다.
요약
컨테이너화한 콘솔 앱 같은 것을 시작하고 싶었을 뿐인데 상당히 고생했습니다.
원하는 액션이 없을 때는 Azure Function을 묶어 그 안에서 REST API 두드리고 있었는데 인증 주위가 매우 귀찮았습니다.
그런 매니지드 ID를 이용한 인증은 매우 편하고 부담없이 REST API를 시도할 수 있다고 생각했습니다.
컨테이너화한 콘솔 앱 같은 것을 서버리스로 기동하는 방법에 대해 다른 편한 방법등 있으면 교시 바랍니다.
Reference
이 문제에 관하여(컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kwhrkzk/items/009ff7363ffd330c95dd
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
컨테이너화한 콘솔 앱 같은 것을 시작하고 싶었을 뿐인데 상당히 고생했습니다.
원하는 액션이 없을 때는 Azure Function을 묶어 그 안에서 REST API 두드리고 있었는데 인증 주위가 매우 귀찮았습니다.
그런 매니지드 ID를 이용한 인증은 매우 편하고 부담없이 REST API를 시도할 수 있다고 생각했습니다.
컨테이너화한 콘솔 앱 같은 것을 서버리스로 기동하는 방법에 대해 다른 편한 방법등 있으면 교시 바랍니다.
Reference
이 문제에 관하여(컨테이너화된 MeCab을 Azure Container Instances에서 실행하는 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kwhrkzk/items/009ff7363ffd330c95dd텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)