hubot-slack的Dockerfile(debian版)

目录详情

hubot-slack
  |
  ├──scripts    # このディレクトリ以下にhubotの応答用スクリプトを用意
  ├──tools      # このディレクトリ以下に応答内容に応じて実行されるスクリプトを用意
  └──Dockerfile # docker buildで使用 

Dockerfile:

FROM node:latest

MAINTAINER XXXX <xxxxx@xxx.com>

# package update
RUN apt-get update && \
    apt-get -y install -y git-core redis-server vim

RUN adduser --disabled-password --gecos "" hubot && \
    chown -R hubot:hubot /home/hubot  && \
    echo "hubot ALL=(ALL)       ALL" >> /etc/sudoers && \
    mkdir /root/packages && \
    cd /root/packages && \
    wget https://github.com/stedolan/jq/releases/download/jq-1.5/jq-linux64 && \
    chmod +x jq-linux64 && \
    cp -p jq-linux64 /usr/bin/jq

RUN npm install -g coffeelint
RUN npm install -g yo generator-hubot
RUN npm install hubot-slack hubot-proxy-loader --save

USER hubot
WORKDIR /home/hubot
RUN mkdir test && \
    mkdir test/tools && \
    cd test && \
    yo hubot --owner hoge --name testbot --description "hubot for hoge" --adapter slack && \
    jq ' .-["hubot-heroku-keepalive","hubot-pugme","hubot-shipit"]' external-scripts.json > new-external-scripts.json && \
    jq ".[$(jq -s '.[] | length' new-external-scripts.json)]|= .+\"hubot-proxy-loader\"" new-external-scripts.json > new2-external-scripts.json && \
    mv new2-external-scripts.json external-scripts.json && rm -f new-external-scripts.json && rm -f hubot-scripts.json

COPY tools/ test/tools
COPY scripts/ test/scripts

ENV HUBOT_SLACK_TOKEN xxxx-123123-234434ssssss
ENV HUBOT_SLACK_CHANNELMODE whitelist
ENV HUBOT_SLACK_CHANNELS temporalchatroom

WORKDIR /home/hubot/test
CMD bin/hubot --adapter slack

LABEL version="0.0.1"
    • jqを新たにインストール

 

    • jqでexternal-scripts.jsonを編集してアドオンを必要に応じて取捨選択

 

    • slackのTokenはslack上で発行したものを書く

 

    COPYで必要なものをコピーしてくる

构建Docker容器和运行Docker容器。

docker build -t your-repo-name/image-name:0.0.1 --force-rm=true --no-cache=true .
docker run --name testbot -d -t your-repo-name/image-name:0.0.1

注意要点

    • コピーするcoffeeスクリプトにシンタックスエラーがあると、docker run後にコンテナがExited(127)などのステータスになり動かない。

 

    WORKDIRで決めたディレクトリより上の階層をRUNの中で言及するとbuild時にエラーになり怒られる。
bannerAds