Mattermost-dockerをRaspberry Pi3で動かす
ラズパイ用のMattermostをビルドした後で、Mattermost-docker用のdockerコンテナを作成します。
この記事は、MattermostをRaspberry Pi3用にビルドするの続編となっています。またラズパイには、dockerとdocker-composeがインストールされている必要があります。
参考: dockerは、Get Docker-CE for Debian にある armhf用でインストールします。
docker-composeは、Raspberry Pi用docker-composeの構築 を参照して下さい。
1. Mattermost-dockerのコンテナ
Mattermost-dockerでは、app、db、webの3つのコンテナを使用していますが、それぞれのBase Imageは以下のようになっています。
サービス | app | db | web |
---|---|---|---|
コンテナ | mattermost-docker_app | mattermost-docker_db | mattermost-docker_web |
アプリケーション | mattermost-team-linux-arm.tar.gz | ||
ベースイメージ | alpine:3.6 | postgres-9.4:alpine | nginx:mainline-alpine |
- ラズパイ用としてappのベースイメージである
alpin:3.6
は、arm32v6/alpine:3.6
がalpine:3.6.2
ベースになっていますので、これを使います。 - PostgreSQLは、
arm32v6/postgres:9.4-alpine
にします。 - nginxは、見つからなかったので
arm32v6/alpine:3.6
をベースイメージとして、コンテナを作ってしまいましょう。このコンテナイメージ名をarm32v6/nginx:mainline-alpine
としてビルドすると、以下のようになります。
サービス | app | db | web |
---|---|---|---|
コンテナ | mattermost-docker_app | mattermost-docker_db | mattermost-docker_web |
アプリケーション | mattermost-team-linux-arm.tar.gz | ||
ベースイメージ | arm32v6/alpine:3.6 | arm32v6/postgres:9.4-alpine | arm32v6/nginx:mainline-alpine |
この図では、nginx用のベースイメージをarm32v6/nginx:mainline-alpine
としていますが、そのコンテナイメージを作成するためのベースイメージをarm32v6/alpine:3.7
としています。mattermostのappでは、alpine:3.6
でしたがnginx:mainline-alpine
のDockerfileがalpine:3.7
を使っていましたので3.7に修正しています。
2. nginx用コンテナの作成
docker-nginx
をクローンします。
git clone https://github.com/nginxinc/docker-nginx.git
alpine用のmainlineということで、mainline/alpine
ディレクトリのDockerfileを修正してベースイメージをラズパイ用にします。
cd docker-nginx/mainline/alpine
vi Dockerfile
FROM arm32v6/alpine:3.7
ここで、dockerコンテナをビルドします。
docker build -t arm32v6/nginx:mainline-alpine .
3. mattermost-dockerのビルド
いよいよmattermost-dockerのコンテナをビルドします。
3.1 mattermost-dockerのクローン
mattermost-docker
をクローンします。
git clone https://github.com/mattermost/mattermost-docker.git
3.2 mattermostパッケージをコピー
事前にビルドしておいたmattermost-team-linux-arm.tar.gz
ファイルをmattermost-docker/app
ディレクトリにコピーします。
cp mattermost-team-linux-arm.tar.gz mattermost-docker/app
3.3 app/Dockerfileの修正
app/Dockerfileをラズパイ用に修正します。
cd mattermost-docker/app
vi Dockerfile
FROM arm32v6/alpine:3.6
またDockerfile
の# Get Mattermost
のRUNコマンドを、以下の内容に修正して、事前にビルドしたパッケージを使用するようにします。
COPY mattermost-team-linux-arm.tar.gz /
RUN mkdir -p /mattermost/data \
&& tar zxvf mattermost-team-linux-arm.tar.gz \
&& cp /mattermost/config/config.json /config.json.save \
&& rm -rf /mattermost/config/config.json \
&& rm mattermost-team-linux-arm.tar.gz
3.4 db/Dockerfileの修正
db/Dockerfileをラズパイ用に修正します。
cd mattermost-docker/db
vi Dockerfile
FROM arm32v6/postgres:9.4-alpine
3.5 web/Dockerfileの修正
web/Dockerfileをラズパイ用に修正します。
cd mattermost/web
vi Dockerfile
FROM arm32v6/nginx:mainline-alpine
3.6 mattermost-dockerのビルド
準備ができたので、mattermost-dockerをビルドします。
cd mattermost-docker
docker-compose build
ビルドが成功すると、以下の3つのコンテナイメージができています。
$ docker images
REPOSITORY TAG IMAGE ID CREATED
SIZE
mattermost-docker_web latest a176edc41160 16 seconds ago
15MB
mattermost-docker_app latest d10b8c15596b 32 seconds ago
165MB
mattermost-docker_db latest 41694313188e About a minute a
go 336MB
4. mattermost-dockerの起動
docker-composeを使って、mattermost-dockerを起動します。
cd mattermost-docker
docker-compose up -d
起動している状態は、以下となっています。
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d324568f0991 mattermost-docker_web "/entrypoint.sh" 20 seconds ago Up 10 seconds 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp mattermost-docker_web_1
397890880eda mattermost-docker_app "/entrypoint.sh plat…" 20 seconds ago Up 11 seconds 80/tcp mattermost-docker_app_1
515ab571d4b6 mattermost-docker_db "/entrypoint.sh post…" 20 seconds ago Up 11 seconds 5432/tcp mattermost-docker_db_1
5. mattermost-dockerのアクセス
ブラウザからmattermost-dockerの動いているラズパイをアクセスします。
成功していれば、Mattermostの初回サインアップ画面が表示されますから管理者用のアカウントを作成します。
6. 実際の利用にあたって
上記でラズパイ上で、Mattermostを利用できるようになりました。ただし、実際に利用する場合にはhttps対応をしたり、dbとappでマウントするボリュームを変更したりしておいた方が良いでしょう。