はじめに
前回、mattermostを普通にインストールしてみたのですが、dockerで簡単にインストールできるようなので、dockerでのインストール手順やtipsを記載します。と言ってもほぼ1行でインストールできるのですががが
Dockerとは
そもそもdocker(コンテナ)とは何やねん?という方はこちらのサイトを参考にしてみてください。
簡単に説明すると、コンテナとは仮想環境の1種です。仮想マシン(VM)とは違ってゲストOSが不要で軽量に動作します(ホストOSのカーネルを共用)。dockerのコマンドを触ると実感しやすいのですが、コンテナイメージの作成、配布、実行、削除などがサクサクできます。
ミドルウェアのインストールや環境設定などはコード化されているので、開発~本番環境まで統一された環境、バージョンで運用できたりします。また、物理マシンが異なっても環境は同じものになるため、HWの違いによる動作不具合なんかも防げると思います。インフラ担当の方に朗報な技術ですね!
また、AWSではECSでコンテナ管理までマネージドしてくれるサービスがあるので、そのうち触ってみようかと思います。あれ、無料枠で使えるんだっけ?
環境
- EC2:CentOS Linux release 7.6.1810 (Core)/3.10.0-957.1.3.el7.x86_64
- Mattermost:5.13.2 (2019/09時点)
- docker:19.03.2
参考情報
- 公式のインストールマニュアル(Local Machine Setup using Docker)
dockerのインストール
まずdockerを導入する必要があります。既にinstallしてる方は次へ飛んでください。
必要なパッケージをインストール
[root@ip-172-31-46-225 ~]# yum install -y yum-utils device-mapper-persistent-data lvm2
yumのリポジトリを追加
[root@ip-172-31-46-225 ~]# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dockerをインストール
[root@ip-172-31-46-225 ~]# yum install -y docker-ce
確認
[root@ip-172-31-46-225 ~]# yum list installed | grep docker-ce
dockerを起動
[root@ip-172-31-46-225 ~]# systemctl start docker
dockerを自動起動
[root@ip-172-31-46-225 ~]# systemctl enable docker
Mattermostをdockerでインストール
one-lineでイケちゃうやつ。
[root@ip-172-31-46-46 ~]# docker run --name mattermost-preview -d --publish 8065:8065 --add-host dockerhost:127.0.0.1 mattermost/mattermost-preview
ブラウザで設定する
http://[EC2のパブリックIP]:8065
コンテナを使えば一瞬で構築できてしまいますね・・・Docker・・・恐ろしい子ッッッ
あ、AWSなのでセキュリティグループから8065を許可してあげてください。
メモ
- mysqlやファイルの保存場所はローカルに設定されている(RDSやS3に設定する場合は別途作業が必要。コンテナイメージをコネコネすればイケそう?)
- 下記に記載するように色々と設定がデフォルトなのでPWDとか変える必要ありそう
設定ファイルを見てみる
dockerで動いているプロセスを確認
[root@ip-172-31-46-46 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d0e94749b49e mattermost/mattermost-preview "/bin/sh -c ./docker…" 33 minutes ago Up 33 minutes 3306/tcp, 33060/tcp, 0.0.0.0:8065->8065/tcp mattermost-preview
コンテナにログインする
CONTAINER IDを指定してログインします。
[root@ip-172-31-46-46 ~]# docker exec -it [CONTAINER ID] bash
mattermostの設定ファイル
“SqlSettings”の部分とか。出力が長いので省略します。コンテナからログアウトしたい場合はexit。
root@d0e94749b49e:/mm# cat /mm/mattermost/config/config.json
まとめ
- dockerマジで便利
- イメージをカスタマイズするにはそれなりに工数が必要そう
- k8sを導入してコンテナ管理も楽しそう(AWSのECSでもいいかもしれない)