公式のDocker版のMattermostを少し変更したものを使用しているのですが、バージョンアップの時に行っている手順とかを書いてみます。

前提と環境


GitLabSSOのやり方については以前こちらの記事で書いてます。GitLabSSOを使用しない場合はそこの手順だけすっ飛ばせばあとは同じのはずです。

手順


下記のような流れでやります。

  • Mattermotsのテスト環境の作成と新バージョンのイメージ作成
  • GitLabで認証設定
  • Mattermostでの設定変更
  • Mattermost新バージョンでのテスト
  • Mattermostのバックアップ
  • Mattermostの実運用のイメージを差し替え

また、今回の手順ではMattermostの設定ファイル(config.json)は差し替えられません。config.jsonを変更したい場合は別途最新のものを取得して値を変更する必要があります。

Mattermostのテスト環境の作成と新バージョンのイメージ作成


まず始めにMattermostのテスト環境の作成と新バージョンのイメージを作成します。テスト環境の作成と同時に新バージョンのイメージの作成を同時にやってしまいます。作成した新バージョンのイメージはそのまま本番で使用します。

テスト環境の作成

まず既存のディレクトリを丸ごとコピーします。それをそのままテスト環境として使用します。

ポートの変更

先ほどコピーした環境をテストとして使用しますが、作業時に実際に稼働しているMattermostと同一サーバで実施する場合はポートを変更する必要があります。

Dockerfileの変更

MattermostのDockerfileのMattermostバージョンを変更します。

マイグレーションガイドが存在するか確認する

バージョン(例えば4.9以上へ上げる場合など)によっては公式のDocker版のMattermostのREADMEに対応手順が書いてあったりします。そちらを読んで追加の手順がないか確認しましょう。読まないとハマることになります。

イメージの再作成

docker-compose build --no-cacheでDockerイメージを再作成します。これでDockerfileで変更したバージョンのMatetrmostのイメージが出来上がります。

起動

docker-compose up -dで作成したMattermostを起動できることを確認します。

GitLab認証設定


GitLabSSOを使用していない場合はこの手順は必要ないです。

先ほど作成したMattermostのテスト環境に併せたApplicationのAPI設定を行います。作成方法は以前こちらの記事で書いているので参考にしてください。

GitLab側での設定は以上です。この後、再度Mattermost側の設定を行ないます。

Mattermost設定とテスト


再度Mattermost側に戻りconfig.jsonを編集します。変更する箇所は下記のとおりです。

  • ServiceSettingsSiteURLにポート付きのURL(もしくはIP)を指定
  • GitLabSettingsSecretIdに先ほどGitLabで設定した値を設定

Mattermostのブラウザおよびクライアントでテスト用環境に接続し下記を確認します。

  • Mattermostのバージョンがあがっていること
  • 動作が問題ないこと

バックアップ


本番稼働しているMattermostの環境をバックアップします。

本番のバージョンアップ


ここまでで問題なければ、本番のMattermostのバージョンアップを行ないます。docker-compose.ymlの各コンテナのイメージを始めに作成したイメージに変更します。変更後はdokcer-compose downの後にdocker-compose up -dで再起動するだけです。

以上です。こういう点でDockerはかなり楽だと思いますね。