使用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作成