32bitのDocker環境でMattermostを構築する。

余っている32bitパソコンにDocker環境を作って、Mattermostを構築してみます。

# 前提
* 32bit Windowsパソコンしか余っていなかった。
* Virtual Boxは導入しました。
* [Ubuntu Server 14.04](http://releases.ubuntu.com/14.04/ubuntu-14.04.3-server-i386.iso)で仮想サーバ立てました。

# Dockerを導入

## golfingをインストール
[golangの32bitイメージ](https://storage.googleapis.com/golang/go1.5.3.linux-386.tar.gz)を取得し適当な場所に解凍。
解凍後、GOROOT,GOPATHを指定。

```
$ pwd
/home/hoge
$ wget https://storage.googleapis.com/golang/go1.5.3.linux-386.tar.gz
$ tar zxvf go1.5.3.linux-386.tar.gz
$ export GOROOT=$HOME/go
$ mkdir gocode
$ export GOPATH=$HOME/gocode
$ export PATH=$GOPATH/bin:$PATH:$GOROOT/bin
```

## dockerのビルドに必要なものをapt-get instal
```
$ sudo apt-get -y install git linux-image-extra-$(uname -r) lxc xz-utils
``` 

## dockerとubuntu32bitイメージのインストール

[docker-32bit/ubuntu](https://github.com/docker-32bit/ubuntu)のbuild-image.shを実行します。
※proxy環境で実行する場合、以下のようにshを修正して実行

```
#!/bin/bash -ex
### Build a docker image for ubuntu i386.

### settings
arch=i386
suite=${1:-trusty}
chroot_dir="/var/chroot/$suite"
apt_mirror='http://archive.ubuntu.com/ubuntu'
docker_image="32bit/ubuntu:${1:-14.04}"
##########以下のように環境変数を追加###########
export http_proxy=http://proxy.hogehoge:8080
##########################################

### make sure that the required tools are installed
packages="debootstrap dchroot"
which docker || packages="$packages docker.io"
apt-get install -y $packages

### install a minbase system with debootstrap
export DEBIAN_FRONTEND=noninteractive
########## 以下のように修正 ################
# debootstrap --variant=minbase --arch=$arch
http_proxy=$http_proxy debootstrap --variant=minbase --arch=$arch 
#########################################
$suite $chroot_dir $apt_mirror

以下省略
```

## mattermostのビルドに必要なnode,rpmをインストール

```
$ sudo apt-get install npm
$ sudo apt-get install build-essential libssl-dev
$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.25.2/install.sh | bash
$ . ~/.bashrc
$ nvm install 5.5.0
```

## mattermostのビルドに必要なruby,compassをインストール
```
$ sudo apt-get update
$ sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties
$ sudo apt-get install libgdbm-dev libncurses5-dev automake libtool bison libffi-dev
$ curl -sSL https://rvm.io/mpapis.asc | gpg --import -
$ curl -L https://get.rvm.io | bash -s stable
$ source ~/.rvm/scripts/rvm
$ echo "source ~/.rvm/scripts/rvm" >> ~/.bashrc
$ rvm install 2.1.2
$ rvm use 2.1.2 --default
$ ruby -v
$ gem install compass
```

## mattemostを32bit環境でビルド
docker imageでは64bitでビルドしたものしかないので、githubから
cloneしてビルドします。

```
$ go get github.com/kr/godep
$ mkdir -p $GOPATH/src/github.com/mattermost/platform
$ git clone https://github.com/mattermost/platform $GOPATH/src/github.com/mattermost/platform
$ cd $GOPATH/src/github.com/mattermost/platform
$ make dist
```

## mattemostをdocker buildしてimage構築
最後にmattermostのdocker imageを作成します。
まずは、docker buildに必要なファイルを集めます。

```
$ cd
$ mkdir mattermost
$ cd mattermost
$ cp $GOPATH/src/github.com/mattermost/platform/docker/1.4/Dockerfile ./.
$ cp $GOPATH//src/github.com/mattermost/platform/docker/1.4/config_docker.json ./.
$ cp $GOPATH//src/github.com/mattermost/platform/docker/1.4/docker-entry.sh ./.
```

ここでDockerfileを修正します。

```
# Copyright (c) 2015 Mattermost, Inc. All Rights Reserved.
# See License.txt for license information.
################元となるubuntuのイメージを32bitに変更#############
#FROM ubuntu:14.04
FROM 32bit/ubuntu:14.04
################################################################

#
# Install SQL
#

ENV MYSQL_ROOT_PASSWORD=mostest
ENV MYSQL_USER=mmuser
ENV MYSQL_PASSWORD=mostest
ENV MYSQL_DATABASE=mattermost_test

###########追加#############
RUN dpkg-divert --local --rename --add /sbin/initctl
RUN ls -l /sbin/initctl.distrib
RUN ln -s /bin/true /sbin/initctl
###########################

～途中略～
# Copy over files
############# mattersoftのバイナリの取得元を変更##########################
#ADD https://github.com/mattermost/platform/releases/download/v1.4.0/mattermost.tar.gz /
COPY mattermost.tar.gz /
########################################################################
RUN tar -zxvf /mattermost.tar.gz --strip-components=1 && rm /mattermost.tar.gz
ADD config_docker.json /
ADD docker-entry.sh /

RUN chmod +x /docker-entry.sh
ENTRYPOINT /docker-entry.sh
～以下略～
```

最後にdocker buildして、起動

```
$ cd
$ sudo docker build -t local/mattermost:1.0.0 mattermost
$ sudo docker run --name mattermost-dev -d --publish 8065:80 local/mattermost:1.0.0
```

これでブラウザからhttp\://localhost:8065にアクセスすればmattermostを利用できます。