mattermost-docker-with-ja-search

Mattermost

概要

DockerでMattermost(日本語全文検索対応)を構築するプロジェクトです。

※プロキシ環境で構築していたものから、プロキシ情報を一旦全て削除して持ってきただけの状態です。プロキシなし環境で動作するかまだ検証ができていません。

使い方

git clone して docker-compose up -d でOKです。
コンテナが以下のように作成されます。

# docker ps
CONTAINER ID        IMAGE                                                     COMMAND                  CREATED             STATUS              PORTS                                            NAMES
02c0945d8590        mattermost-docker_app                                     "/docker-entry.sh ma…"   4 days ago          Up 4 days           80/tcp                                           mattermost-docker_app_1
4ca0ae5da052        mattermost-docker_db                                      "docker-entrypoint.s…"   4 days ago          Up 4 days           5432/tcp                                         mattermost-docker_db_1
8a7e6610a561        mattermost-docker_web                                     "nginx -g 'daemon of…"   4 days ago          Up 4 days           0.0.0.0:80->80/tcp                               mattermost-docker_web_1

フォルダ構造

./mattermost-docker
|-- app(MattermostアプリのDockerイメージ)
|-- db(Mattermostアプリが使用するpostgresのDockerイメージ)
|-- img
|-- web(NginxのDockerイメージ)
|-- README.md
`-- docker-compose.yml

要所解説

app、db、web の要所を解説します。

app

https://github.com/mattermost/mattermost-docker を参考に作ってます。

プロキシ設定

プロキシ設定はdocker-composeでenv(コンテナ実行時の環境変数)にも設定してます。リンクプレビューとかするときにプロキシを通るので。
Dockerfileでconfig.jsonの .ServiceSettings.AllowedUntrustedInternalConnections にプロキシを設定していますが、これを設定しないとMattermostがプロキシと通信してくれません。 画面ではシステムコンソールのDeveloperのところに設定があります。

db

Mattermostの日本語検索に対応するために結構いじってます。

日本語検索に対応するために参考にしたサイト

日本語検索対応

MeCabとか日本語検索するために必要なツールのインストールはDockerfileに書いてます。
curlで毎回ダウンロードしてもよかったけど、重かったので事前にダウンロードしたやつを使ってます。

textsearch_jaのextension(postgres拡張設定)はコンテナ起動時に create extension if not exists textsearch_ja で初回起動時に作ってます。
(毎回作りたいけどどうすればいいか分からない・・・)

mattermost=# \dx
 List of installed extensions
     Name      | Version |   Schema   |                             Description
---------------+---------+------------+----------------------------------------------------------------------
 plpgsql       | 1.0     | pg_catalog | PL/pgSQL procedural language
 textsearch_ja | 9.6     | public     | Integrated Full-Text-Search for Japanese
 using morphological analyze
(2 rows)

デフォルトのテキスト検索設定はdocker-composeでコマンドに postgres -c default_text_search_config=pg_catalog.japanese を指定して設定しています。

mattermost=# show default_text_search_config;
 default_text_search_config
----------------------------
 pg_catalog.japanese
(1 row)

web

https://docs.mattermost.com/install/config-proxy-nginx.html 参考に作ってます。