Mattermost(production版)のDBをMySQLに変更する。
前回までのあらすじ
Mattermostのdocker-compose.ymlファイルを公式のgitHubページから取得
その後、ymlファイルを使ってサーバを構築するところまで完了しました。
今回の目的
前回立ち上げたmattermostのDBを MySQL に変更する。
日本語検索の対応を考えるとMySQLの方が何かと便利そうですので・・・。
実践
dockerド素人の私でもymlをいい感じに直せば
dbの変更くらいワケないってことは重々承知しています。
それっぽいymlを公開してるリポジトリがgitHubに無いかな~っと探すと
あった!
github.com
ありがたい・・・。参考にさせて頂きます。
こんな感じで修正しました(一部抜粋)
version: "2" services: db: - build: db + image: mysql + container_name: mm_db - read_only: true restart: unless-stopped volumes: - - ./volumes/db/var/lib/postgresql/data:/var/lib/postgresql/data + - ./volumes/db/data:/var/lib/mysql + - ./volumes/db/settings:/etc/mysql/conf.d - /etc/localtime:/etc/localtime:ro environment: - - POSTGRES_USER=mmuser - - POSTGRES_PASSWORD=mmuser_password - - POSTGRES_DB=mattermost + - MYSQL_ROOT_PASSWORD=[任意のパスワード] + - MYSQL_USER=[任意のユーザネーム] + - MYSQL_PASSWORD=[任意のパスワード] + - MYSQL_DATABASE=mattermost # uncomment the following to enable backup # - AWS_ACCESS_KEY_ID=XXXX # - AWS_SECRET_ACCESS_KEY=XXXX # - WALE_S3_PREFIX=s3://BUCKET_NAME/PATH # - AWS_REGION=us-east-1 app: build: context: app # uncomment following lines for team edition or change UID/GID # args: # - edition=team # - PUID=1000 # - PGID=1000 restart: unless-stopped volumes: - ./volumes/app/mattermost/config:/mattermost/config:rw - ./volumes/app/mattermost/data:/mattermost/data:rw - ./volumes/app/mattermost/logs:/mattermost/logs:rw - ./volumes/app/mattermost/plugins:/mattermost/plugins:rw - /etc/localtime:/etc/localtime:ro environment: # set same as db credentials and dbname + - DB_PORT_NUMBER=3306 + - MM_SQLSETTINGS_DRIVERNAME=mysql + - MM_SQLSETTINGS_DATASOURCE=[設定したユーザ名]:[設定したパスワード]@tcp(db:3306)/mattermost?charset=utf8mb4,utf8&readTimeout=30s&writeTimeout=30s - MM_USERNAME=mmuser - MM_PASSWORD=mmuser_password - MM_DBNAME=mattermost ...
以前作ったコンテナは一旦破棄しちゃいましょう。
sudo docker rm [対象のコンテナID or コンテナ名]
後は前回通り、docker-compose up -d
で起動です。
本当はdb
ディレクトリやapp
ディレクトリにある
entrypoint.sh
の中身をうまく改造してあげるのが良いのだと思いますが
docker初心者かつ、手っ取り早い方法でテストしてみたかったのでお許しを。
日本語部分一致検索対応
うまくコンテナが起動し、画面確認が終わったら
次はMattermost上で日本語の部分一致検索が行えるようにしましょう。
まずはdbのコンテナに入ってmy.cnfを修正します。
こちらの記事を参考に修正しましょう。 www.nedia.ne.jp
ここで注意事項。
今回指定したMySQLのイメージは最新バージョンです。
よってMySQL8 のバージョンが自動的に指定されます。
MySQL8ではinnodb関連の設定がデフォルトで指定されているので
先程の記事内の設定ではエラーが出てうまくコンテナが起動しません。
innodb関連の設定は記述しないようにしましょう。
私は/etc/mysql/conf.d/mysql.cnf
に以下のように書きました。
[mysql] default-character-set = utf8mb4 [mysqld] character-set-server = utf8mb4 default_authentication_plugin=mysql_native_password
詳しくは以下の記事の29P辺りを参考に。
default_authentication_plugin
についてはまた別記事で書きますが
phpMyAdminを使用した際
The server requested authentication method unknown to the client [caching_sha2_password]
というエラーメッセージが返ってきて接続できない不具合の対処です。
phpMyAdminを使用する為、暫定的にこういった記述をしていますが
セキュリティ上よろしくないので非推奨です。
まとめ
以上でMySQLへの変更、日本語部分一致検索対応は終了です。
ちなみに一文字の検索だと検索結果が返ってこないみたいです。
helpにも出てきますが、検索結果が多くなるため?
また、検索も濁点抜きのワードも検索対象となってしまうようで
かゆいところに手が微妙に届かないです。
まぁ無料ですし致し方無いかなと・・・。
現場からは以上です。