使用docker-compose为ChatWork创建一个hubot环境

虽然感觉非常冗长。

    • hubot with chatwork adapter

 

    • redis

 

    redisのData Volume Container

我尝试使用docker-compose来管理这三个docker容器。

前提 tí)

    • Mac OS X 10.10.3

 

    • virtualbox 4.3.28

 

    • homebrew

 

    node.js

操作步驟

安装Docker

本次将在boot2docker上运行docker。
今年将在boot2docker上使用docker。

brew install boot2docker

创建并启动boot2docker虚拟机。

boot2docker init
boot2docker start

設置環境變量。

$(boot2docker shellinit)

安装Docker Compose

brew install docker-compose

创建hubot的环境

我将在本地创建一个hubot环境。
我会使用yeoman按照官方指南生成框架。

HUBOT –> 激动奔放的机器人

npm install -g yo generator-hubot
mkdir myhubot
cd myhubot
yo hubot

会有一些问题问到。在机器人适配器上输入Chatwork。

一旦生成模板后,打开当前目录下的external-scripts.json文件。
这次不使用heroku,所以要删除hubot-heroku-keepalive。

编写hubot容器的Dockerfile。

将Dockerfile放置在创建了hubot模板的项目的根目录中。

FROM node:latest

ENV BOT_HOME /bot

RUN mkdir $BOT_HOME
WORKDIR $BOT_HOME

ADD ./package.json $BOT_HOME/
RUN npm install

ADD . $BOT_HOME

CMD ["bin/hubot", "--adapter", "chatwork"]

通过先 ADD package.json 文件然后进行 npm install,可以实现在 package.json 没有改变时跳过构建。我试图模仿 Rails 的 Dockerfile 中对 Gemfile 的方法。

创建一个.dockerignore文件

希望能够忽略掉在构建过程中没有变更的文件。

## node
node_modules

.git

## log
.hubot_history

## OSX
.DS_Store

编写docker-compose.yml

Hubot会根据Dockerfile进行构建,Redis和Data Volume容器将通过映像创建。
将docker-compose.yml文件也放置在项目的根目录中。

redis:
  restart: always
  image: redis:latest
  command: redis-server --appendonly yes
  volumes_from:
    - storage

storage:
  restart: always
  image: busybox:latest
  volumes:
    - /var/lib/redis:/data

hubot:
  restart: always
  build: .
  ports:
    - '8190:8080'
  environment:
    REDIS_URL: redis://redis:6379
    HUBOT_CHATWORK_TOKEN: 
    HUBOT_CHATWORK_ROOMS: 
    HUBOT_CHATWORK_API_RATE: 420
    TZ: Asia/Tokyo
  links:
    - redis

我已经在hubot容器的环境变量中设置了需要连接到redis的REDIS_URL,以及用于chatwork的hubot适配器的环境变量,还设置了时区设置TZ。
通过将值设置为空,环境变量可以在docker-compose up时加载与主机计算机上相同名称的环境变量。这很方便,当我们不想写入安全信息时。

创建 yml 文件 – Docker 文档

虽然我已经在8190端口上让hubot可以访问,但如果只是与Chatwork整合,这并不是特别必要的。

开动

首先,在主机的Mac系统上设置Chatwork的环境变量。

export HUBOT_CHATWORK_TOKEN=XXXXXXXXXXXXXXXXXX
export HUBOT_CHATWORK_ROOMS=XXXXXX,XXXXXX

在项目的根目录下启动。

docker-compose up -d

up命令会将build和启动两个步骤一起完成。

编写命令行 – Docker 文档

通过添加 -d 选项,它将在后台启动。

现在hubot已经可以运行了。如果在chatwork上与它交谈,它应该会回答一些东西。
源代码已经放在GitHub上。

distkloc/docker-hubot-chatwork 可以用下面的中文句子进行翻译:迪斯特克洛克/多克博-话机聊天工作。

请参照以下内容。

    • 複雑な構成のrailsアプリをdockerで動かしたい場合はどうするべきか – Qiita

 

    Docker + Yeoman + Hubot + Slack で簡単bot作成
bannerAds