Edited at

プロキシ環境下でMattermostをDockerで運用する

More than 1 year has passed since last update.

ブログでプロキシ環境下の設定を書くといっていたので、忘れないうちに公開します。

http://irony9901.hatenablog.com/entry/2017/05/07/205726


ベースとしてこちらをローカルに内容コピーして別途作成しました。

https://github.com/jasl8r/docker-mattermost

下記ファイル以外は、すべて上記リポジトリのものをいただきました。


  • アプリノードのDockerfile


Dockerfile

FROM alpine:3.4

ENV MATTERMOST_VERSION=3.8.2 \
MATTERMOST_HOME="/opt/mattermost"

ENV MATTERMOST_DATA_DIR="${MATTERMOST_HOME}/data" \
MATTERMOST_BUILD_DIR="${MATTERMOST_HOME}/build" \
MATTERMOST_RUNTIME_DIR="${MATTERMOST_HOME}/runtime" \
MATTERMOST_INSTALL_DIR="${MATTERMOST_HOME}/mattermost" \
MATTERMOST_CONF_DIR="${MATTERMOST_HOME}/config" \
MATTERMOST_LOG_DIR="/var/log/mattermost"

ENV HTTP_PROXY="http://username:password@proxyhost:port/" \
HTTPS_PROXY="http://username:password@proxyhost:port/"

RUN apk --no-cache add bash gettext \
mysql-client postgresql-client \
ca-certificates

COPY assets/build/ ${MATTERMOST_BUILD_DIR}/
RUN bash ${MATTERMOST_BUILD_DIR}/install.sh

COPY assets/runtime/ ${MATTERMOST_RUNTIME_DIR}/
COPY entrypoint.sh /sbin/entrypoint.sh
RUN chmod 755 /sbin/entrypoint.sh

EXPOSE 80/tcp

VOLUME ["${MATTERMOST_DATA_DIR}", "${MATTERMOST_LOG_DIR}"]
WORKDIR ${MATTERMOST_INSTALL_DIR}
ENTRYPOINT ["/sbin/entrypoint.sh"]
CMD ["app:start"]



  • DB含む全体のdocker-compose.yml


docker-compose.yml

mysql:

restart: always
image: mysql:latest
environment:
- MYSQL_USER=username
- MYSQL_PASSWORD=password
- MYSQL_DATABASE=mattermost
- MYSQL_ROOT_PASSWORD=password
volumes:
- ./db/mysql:/var/lib/mysql

mattermost:
restart: always
build: app
links:
- mysql:mysql
ports:
- "8082:80"
environment:
- SMTP_HOST=host
- SMTP_PORT=25
- SMTP_USER=user
- SMTP_PASS=pass
- SMTP_SECURITY=
- MATTERMOST_SITE_URL=http://mattermosthostname:8082
- MATTERMOST_SECRET_KEY=raaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaandomtext
- MATTERMOST_LINK_SALT=raaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaandomtext
- MATTERMOST_RESET_SALT=raaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaandomtext
- MATTERMOST_INVITE_SALT=raaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaandomtext
- MATTERMOST_ENABLE_SLASH_COMMANDS=true
- MATTERMOST_ENABLE_INCOMING_WEBHOOKS=true
- MATTERMOST_ENABLE_OUTGOING_WEBHOOKS=true
- MATTERMOST_WEBHOOK_OVERRIDE_USERNAME=true
- MATTERMOST_WEBHOOK_OVERRIDE_ICON=true
- NO_PROXY=mattermosthost
volumes:
- ./app/mattermost:/opt/mattermost/data


以前Mattermostをv3.5.1からv3.7.3にアップした際、entrypoint.sh内の次のコマンドでこけました。

./bin/platform -config ${MATTERMOST_CONF_DIR}/config.json

どうやらv3.6からCLIのシンタックスが変わっていたようです。

https://docs.mattermost.com/administration/command-line-tools.html#platform

オプションのハイフンが1つ多く必要です。

./bin/platform --config ${MATTERMOST_CONF_DIR}/config.json

バージョンアップ時にこういう細かい変更に気づきづらいのは、自分でDockerfileから作ってない弊害ですね・・・

他人のDockerfileを使う際は、ざっと中身を読んでおいたほうが良いと思います。


おまけ:hubotのプロキシ対応について

どうやらできるプラグインもあるらしいですが、不安定なようですね・・・

http://qiita.com/hironot/items/7c151d462bc61554353f

うちの場合はpug meとかの機能は要らないと思っていて、さらに社内・社外のAPIとのやり取りも作り込む必要があるので、ゲートウェイ代わりのJVMアプリを作成して落ち着かせようと思っています。

https://github.com/kojisaiki/BotGateway