ざっくんのブログ(仮)

面白く生きるためのブログ(思いついたことや気づいたことを書いたり)

awsにdockerを入れてWekanを動かしてみた

今朝は5時に起きました。
それでいつも通り走りに行き、帰ってきて前日の振り返りをしていたのですが、どうも冬の休み期間中に目標にしていたAWS上でbootstrap3で遊んでみるとか、サーバーサイドアプリを作ってみるとかそういうのが難しいのでは?と考え始めました。

そもそもが、「冬休み期間」っていつまでやねんってところだったですし、あんまり考えなしにやりたいことをリストアップして、毎日ちょっとづつやるスタイルで始めていたのでまぁそうなるよねって感じなんですが。

やっぱりここはTOCの人としては作業管理だろうと思いまして。
作業管理っていうか、作業のリストアップと見積もり、優先順位付けをして実績と比較して次の計画を立てる的なあれです。

ということで、「カンバン フィボナッチ」で検索。

こちらのサイトが面白そうだったので参考にさせていただきました。
Namiking.net オープンソースのかんばん式管理ツールを3つほど試してみた

TAIGA
https://taiga.io/
Wekan (旧LibreBoard)
http://newui.libreboard.com
Restyaboard
http://restya.com/board/

TAIGAは以前ちょっと使ってみたことがあります。
そしてWekanは会社の先輩がdockerに入れて現場に提供していた記憶があります。 Restyaboardは知りません。

ということで導入と使用方法が比較的簡単そうなWekanをAWSにdockerを入れて使ってみようと思いいろいろやりました。

dockerのインストール

AWSのイメージはUbuntuなのでこれを参考にdockerをインストール。
https://docs.docker.com/engine/installation/linux/ubuntulinux/

OSのリリース番号を調べる

$ uname -r
4.4.0-57-generic

4.4.0とかそういうやつですね。新しい。

パッケージ情報の更新と、「https動作」「CA証明書のインストール」確認

$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates

GPGキーのローカルキーチェーンへの取り込み

$ sudo apt-key adv \
               --keyserver hkp://ha.pool.sks-keyservers.net:80 \
               --recv-keys 58118E89F3A912897C070ADBF76221572C52609D

GPGキーについてはこちら を参照。

対応するリポジトリを探す

Ubuntu version Repository
Precise 12.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-precise main
Trusty 14.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-trusty main
Wily 15.10 deb https://apt.dockerproject.org/repo ubuntu-wily main
Xenial 16.04 (LTS) deb https://apt.dockerproject.org/repo ubuntu-xenial main

この表の中から自分の環境にあったリポジトリを調べておきます。
私の場合は一番下のXenialですね。
ちなみに$ cat /etc/lsb-releaseUbuntuのバージョンを調べられます。

dockerの取得先を定義して読み込む

echo "<REPO>" | sudo tee /etc/apt/sources.list.d/docker.list

このの部分を↑で見つけといたリポジトリに置き換えて実行する。
ちなみに私の環境だとこうなりますね。

echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list

で、この定義したファイル(/etc/apt/sources.list.d/docker.list)を読み込む。

sudo apt-get update

Linuxカーネルのパッケージを追加する?

sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual

ちょっとよくわからないんですがaufsストレージドライバー的なものをdockerが使えるようにするために「linux-image-extra-$(uname -r)」「linux-image-extra-virtual」とかが必要と書いてあるのでそのまま実行。
前後でdpkg -l | grep linux-imageを実行してちゃんとインストールされたことを確認しました。

dockerのインストールと起動

$ sudo apt-get install docker-engine
$ sudo service docker start

やっとですね。これでdockerが動き出しました。

ユーザーをdockerグループに追加

$ sudo usermod -aG docker $USER

毎回sudoをつけてdokerを操作するのが面倒なので、普段操作するユーザーをdockerグループに入れます。

docker-composeの導入と必要なdockerイメージを取得する

ここからは主にこちらを参考に。
Namiking.net Wekan on Dockerでお手軽かんばん式プロジェクト管理

docker-composeってどうも、複数のdockerコンテナを使ってサービスを提供する場合なんかに、一個ずつ立ち上げるの面倒だね、とか立ち上げる順番が関係する、とかいろいろあるらしくその辺を定義ファイルに書いておけばコマンド一つで複数のdockerコンテナが立ち上がる というものだと理解しました。間違ってたらごめんなさい。誰か教えてください。

docker-composeのインストール

$ pip install -U docker-compose

これでインストールできます。ちなみに私の環境にはpipがなかったので事前にsudo apt install python-pipを実行しておきました。

必要なdockerイメージを取得する

$ docker pull mquandalle/wekan
$ docker pull mongo
$ docker pull busybox

この辺りが必要そうだったのでpullで取得。

docker-compose.yml 設置

data:
  image: busybox
  volumes:
    - /data/db

mongo:
  image: mongo
  volumes_from:
    - data
  restart: always

wekan:
  image: mquandalle/wekan
  environment:
    MONGO_URL: mongodb://db
    ROOT_URL: http://example.com:8080
  links:
    - mongo:db
  ports:
    - "8080:80"
  restart: always

カレントディレクトリの下にdocker作業用のフォルダを作って、その配下に、上記内容でdocker-compose.ymlを作成。(作成場所ってこんなところでいいんだろうか?)
ROUT_URLは自分のAWSのURLにしました。適宜修正してください。
ちなみに最初は「http://localhost:8080」と書いて動かしていたんですが、一部(カンバンにカードを追加した後のカード詳細入力画面)でURLがおかしくなってしまって動かなかったのでAWSのURLに書き直しました。

そういえばこの時、一度作ったdockerコンテナを全部削除(docker stop, docker rm)したのでWekanで作ったユーザーとかも消えてしまったんだけど、必要な部分だけ修正してデータを残すなんてっことはどうやったらできるんだろう?

Docker起動

$ docker-compose up -d

これで、docker-compose.ymlで定義した3つのdockerコンテナが動きます。

動作確認

http://(SERVER_IP):8080/

動作確認します。以下画面が表示されれば成功です。
f:id:yoshitsugumi:20170103150040p:plain

カンバンの画面

f:id:yoshitsugumi:20170103150057p:plain こんな画面でタスクの管理をやっていくみたいです。

最後に

aws上にdockerを入れてWekanを動かしてみるというのをやってみました。
意外に短時間でできたので興味ある方はやってみてはいかがでしょうか?
私の場合はdockerのことも知らな買ったし、ubuntuもほぼ触ったことないしでいろいろ調べながらで4時間かかりましたが、次からは数十分でサービスを構築できそうな気がしています。

ちなみに、当初の目的だった作業の見積もりや優先順位付け、実績との比較みたいなのがWekanではできないみたいです。(ぱっと見できなそう。工夫すればできるかもだけど)
全く目的は達成できなかったけど、よくわからない達成感は感じてしまっているこの状態。
ダメですね。頑張ります。