GitHub+Docker Hub+Azure Webapp for Container로 LINE Bot을 만드는 방법
사용하는 것
이 기사에서는 다음 서비스와 도구를 사용하여 LINE Bot을 이동합니다.
구축 절차
1. yeoman & generator-line-bot 설치
아래 명령으로 yeoman과 generator-line-bot을 설치합니다. 만약 nodejs 환경이 없다면 먼저 준비하십시오.
npm install -g yo
npm install -g generator-line-bot
2. LINE Bot 템플릿 생성
↑로 설치한 yeoman & generator-line-bot을 사용해 LINE Bot 템플릿을 작성합니다. 여기에서는 소스를 nodejs로 생성하고 있습니다.
yo line-bot mybot --nodejs
명령을 실행하면 Channel Secret과 Channel Access Token을 듣습니다만, 여기에서 지정한 값은 사용하지 않는 &GitHub에 올려서는 안 되는 문자열이므로, 미입력 그대로 하는 등 적당하게 설정해 둡니다.
3. Dockerfile 만들기
만든 템플릿을 Docker 이미지로 빌드하기 위한 Dockerfile을 만듭니다. (아래 샘플)
FROM node:11.6.0-alpine
ARG CHANNEL_ACCESS_TOKEN
ARG CHANNEL_SECRET
WORKDIR /var/opt/mybot
ADD mybot/index.js .
ADD mybot/package-lock.json .
ADD mybot/package.json .
ADD mybot/static ./static
RUN npm install
ENV CHANNEL_ACCESS_TOKEN ${CHANNEL_ACCESS_TOKEN}
ENV CHANNEL_SECRET ${CHANNEL_SECRET}
EXPOSE 3000
CMD ["npm", "start"]
4. GitHub 리포지토리 생성
GitHub에 소스를 저장하는 리포지토리를 만듭니다.
5. Docker Hub 리포지토리 생성 및 자동 빌드 설정
Docker Hub에서 LINE Bot의 컨테이너 이미지를 게시하기 위한 리포지토리를 만듭니다.
이 때 ↑의 4단계에서 작성한 GitHub 리포지토리에 대한 자동 빌드 설정을 해 둡니다.
6. 생성한 소스를 GitHub 리포지토리에 push
아래 명령으로 작성한 소스와 Dockerfile을 푸시합니다.
git init
git remote add origin https://github.com/stakagi/linebot.git
echo node_modules >> .gitignore
git add -A
git commit -m "add mybot"
git push -u origin master
푸시 후 Docker Hub의 저장소를 보면 자동 빌드가 실행되고 새로운 컨테이너 이미지가 만들어집니다.
7. Azure Webapp for Container 만들기
Azure 포털에서 Azure Webapp를 만듭니다.
세세한 설정은 생략합니다만, 이 설정에서는 「OS」는 Linux 「공개」는 Docker 이미지를 선택해, 컨테이너의 구성으로부터↑의 순서 5에서 작성한 리포지토리의 latest 이미지를 사용하도록 해 둡니다.
//TODO 스크린샷 추가
덧붙여서 terraform으로 만드는 경우는 ↓ 이런 느낌입니다.
provider "azurerm" {
version = "=1.21.0"
subscription_id = "<<Set your subscription id>>"
}
variable "channel_access_token" {}
variable "channel_secret" {}
resource "azurerm_resource_group" "default" {
name = "linebot"
location = "Japan East"
}
resource "azurerm_app_service_plan" "default" {
name = "${azurerm_resource_group.default.name}-plan"
location = "${azurerm_resource_group.default.location}"
resource_group_name = "${azurerm_resource_group.default.name}"
kind = "Linux"
reserved = "true"
sku {
tier = "Basic"
size = "B1"
}
}
resource "azurerm_app_service" "default" {
name = "${azurerm_resource_group.default.name}-appservice"
location = "${azurerm_resource_group.default.location}"
resource_group_name = "${azurerm_resource_group.default.name}"
app_service_plan_id = "${azurerm_app_service_plan.default.id}"
https_only = "true"
app_settings {
CHANNEL_ACCESS_TOKEN = "${var.channel_access_token}"
CHANNEL_SECRET = "${var.channel_secret}"
BASE_URL = "https://${azurerm_resource_group.default.name}-appservice.azurewebsites.net"
WEBSITES_ENABLE_APP_SERVICE_STORAGE = "false"
DOCKER_ENABLE_CI = "true"
DOCKER_REGISTRY_SERVER_URL = "https://index.docker.io"
}
site_config {
linux_fx_version = "DOCKER|shunichitakagi/linebot:latest"
always_on = "true"
}
identity {
type = "SystemAssigned"
}
}
8. LINE Bot 계정 생성 및 Webhook 설정
ぇぺぺrs. 네. 비 · 자 / LINE Bot 계정을 만듭니다.
생성이 끝나면 해당 LINE Bot의 채널 기본 설정 화면에서 Webhook URL에 대해 ↑의 7단계에서 만든 Azure Webapp URL +/callback을 설정합니다.
//TODO 스크린샷 추가
9. Azure Webapp for Container에 대한 토큰 설정
Azure 포털로 돌아가서 7단계에서 만든 Webapp의 애플리케이션 설정 화면을 열고 애플리케이션 설정 항목에 다음 두 가지 설정을 추가합니다.
npm install -g yo
npm install -g generator-line-bot
yo line-bot mybot --nodejs
FROM node:11.6.0-alpine
ARG CHANNEL_ACCESS_TOKEN
ARG CHANNEL_SECRET
WORKDIR /var/opt/mybot
ADD mybot/index.js .
ADD mybot/package-lock.json .
ADD mybot/package.json .
ADD mybot/static ./static
RUN npm install
ENV CHANNEL_ACCESS_TOKEN ${CHANNEL_ACCESS_TOKEN}
ENV CHANNEL_SECRET ${CHANNEL_SECRET}
EXPOSE 3000
CMD ["npm", "start"]
git init
git remote add origin https://github.com/stakagi/linebot.git
echo node_modules >> .gitignore
git add -A
git commit -m "add mybot"
git push -u origin master
provider "azurerm" {
version = "=1.21.0"
subscription_id = "<<Set your subscription id>>"
}
variable "channel_access_token" {}
variable "channel_secret" {}
resource "azurerm_resource_group" "default" {
name = "linebot"
location = "Japan East"
}
resource "azurerm_app_service_plan" "default" {
name = "${azurerm_resource_group.default.name}-plan"
location = "${azurerm_resource_group.default.location}"
resource_group_name = "${azurerm_resource_group.default.name}"
kind = "Linux"
reserved = "true"
sku {
tier = "Basic"
size = "B1"
}
}
resource "azurerm_app_service" "default" {
name = "${azurerm_resource_group.default.name}-appservice"
location = "${azurerm_resource_group.default.location}"
resource_group_name = "${azurerm_resource_group.default.name}"
app_service_plan_id = "${azurerm_app_service_plan.default.id}"
https_only = "true"
app_settings {
CHANNEL_ACCESS_TOKEN = "${var.channel_access_token}"
CHANNEL_SECRET = "${var.channel_secret}"
BASE_URL = "https://${azurerm_resource_group.default.name}-appservice.azurewebsites.net"
WEBSITES_ENABLE_APP_SERVICE_STORAGE = "false"
DOCKER_ENABLE_CI = "true"
DOCKER_REGISTRY_SERVER_URL = "https://index.docker.io"
}
site_config {
linux_fx_version = "DOCKER|shunichitakagi/linebot:latest"
always_on = "true"
}
identity {
type = "SystemAssigned"
}
}
//TODO 스크린샷 추가
10. Azure Webapp for Container에 자동 배포를 위한 Webhook 설정
Docker Hub에 새 이미지가 푸시되면 해당 이미지를 자동으로 Azure Webapp for Container에 배포하므로 Docker Hub에 Azure Webapp의 Webhook을 설치합니다.
//TODO 스크린샷 추가
끝
이상의 설정을 실시하는 것으로, GitHub에 소스를 푸시하면 자동적으로 LINE Bot가 갱신되는 구조가 완성됩니다.
Reference
이 문제에 관하여(GitHub+Docker Hub+Azure Webapp for Container로 LINE Bot을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/stakagi/items/3d9d5677645ec2789e95
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(GitHub+Docker Hub+Azure Webapp for Container로 LINE Bot을 만드는 방법), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/stakagi/items/3d9d5677645ec2789e95텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)