Meshblu에서 오픈 소스 IoT 시작하기 - Part4: Hubot with Slack on Docker
Hubot 및 Slack 설정
Slack의 Integration 페이지
https://{teamdomain}.slack.com/services/new
에서 Hubot을 선택하고 API Token
를 만듭니다. 현재는 Slack과 Hubot의 통합에 필요한 정보는 이 API Token
만이 되어 매우 간단합니다.bot의 이름을 지정하여 아이콘을 변경할 수 있습니다. 이번에는
avodado
라고 명명했습니다.프로젝트
이번에 작성한 프로젝트의 디렉토리 구성입니다. 리포지토리는 여기입니다.
$ cd ~/node_apps
$ git clone https://github.com/IDCFChannel/docker-hubot-slack
$ cd docker-hubot-slack
$ tree
.
├── Dockerfile
├── README.md
├── docker-compose.yml
├── docker-compose.yml.default
├── redis
└── scripts
└── hello.coffee
Dockerfile
기본 이미지는 공식 io.js을 사용합니다. Hubot의 작동에 필요한 기본 npm은 전역에 root로 설치됩니다. Docker 이미지 안에 bot 프로젝트를 Yeoman으로 작성해 둡니다. 컨테이너의 scripts 디렉토리는 Docker 호스트의 디렉토리를 마운트하고 사용합니다.
이번에는 단순히 scripts 디렉토리 아래에 CoffeeScript 파일을 직접 넣기 만하면 external-scripts.json을 사용하지 않습니다.
~/node_apps/docker-hubot-slack/scripts/Dockerfile
FROM iojs:2.3
MAINTAINER Masato Shimizu <[email protected]>
RUN mkdir -p /app
WORKDIR /app
RUN adduser --disabled-password --gecos '' --uid 1000 docker && \
chown -R docker:docker /app
RUN npm install -g hubot coffee-script yo generator-hubot
USER docker
RUN yes | yo hubot --defaults && \
npm install --save hubot-slack mqtt
docker-compose.yml
docker-compose.yml.default를 이름 바꾸고 사용합니다.
$ mv docker-compose.yml.default docker-compose.yml
Docker 이미지의
/app
디렉토리에는 Yeoman을 사용하여 bot를 만들고 있습니다. scripts 디렉토리를 Docker 호스트에서 편집할 수 있도록 마운트합니다. 환경 변수는 테스트를 위해 HUBOT_LOG_LEVEL을 디버그 레벨로 설정하고 HUBOT_SLACK_TOKEN은 Slack의 Integration 페이지에서 얻은 Hubot의 API Token을 채웁니다.또한 Hubot의 동작에는 Redis가 필요하므로 redis 서비스를 추가하여 npm 서비스에 link합니다.
~/node_apps/docker-hubot-slack/scripts/docker-compose.yml
npm:
build: .
volumes:
- ./scripts:/app/scripts
- /etc/localtime:/etc/localtime:ro
ports:
- 8089:8089
environment:
- PORT=8089
- REDIS_URL=redis://redis:6379
- HUBOT_LOG_LEVEL=debug
- HUBOT_SLACK_TOKEN=xxx
links:
- redis
command: ./bin/hubot -a slack
redis:
image: redis
volumes:
- ./redis:/data
- /etc/localtime:/etc/localtime:ro
사용법
빌드 및 실행
Docker 이미지를 빌드합니다. npm 서비스를 빌드하고 up합니다.
$ cd ~/node_apps/docker-hubot-slack
$ docker-compose build npm
$ docker-compose up npm
scripts/hello.coffee
hello
라고 bot에 발언하면, Hi
라고 대답해 오는 간단한 샘플입니다. 이번에는 이 hello 샘플의 bot 스크립트를 실행해 보겠습니다.~/node_apps/docker-hubot-slack/scripts/hello.coffee
module.exports = (robot) ->
robot.respond /HELLO$/i, (res) ->
res.reply "Hi"
Slack에 로그인하고
avocado hello
라고 말하면 masato: Hi
로 응답합니다.Reference
이 문제에 관하여(Meshblu에서 오픈 소스 IoT 시작하기 - Part4: Hubot with Slack on Docker), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/masato/items/7a25ce0615ddf0acb621텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)