ubuntu 14.04でdockerでredmineで遊んでみる

Dockerで遊んでみる　第三弾です。
調子に乗ってこんどはredmineをいってみます。

※大前提として既存のredmineはバックアップとっています。
（ＤＢとfilesディレクトリです）
http://redmine.jp/faq/system_management/backup/
ちなみに使ってるＤＢはmysqlになります。

いつものように、こちらのページを参照して順番にredmineをインストールしていきます。
https://registry.hub.docker.com/u/sameersbn/redmine/

## 環境構築とイメージの取得

```shell-session
※redmine、mysqlの永続的データを置く場所の作成
root@raidtest:~/docker_test# mkdir redmine
root@raidtest:~/docker_test# cd redmine/
root@raidtest:~/docker_test/redmine# mkdir mysql
root@raidtest:~/docker_test/redmine# mkdir redmine
root@raidtest:~/docker_test/redmine#

※redmineのイメージを持ってくる
root@raidtest:~/docker_test/redmine# docker pull sameersbn/redmine:latest
latest: Pulling from sameersbn/redmine

～　ずらずらずらっと　～

Status: Downloaded newer image for sameersbn/redmine:latest
root@raidtest:~/docker_test/redmine#

※mysqlのイメージを持ってくる
root@raidtest:~/docker_test/redmine# docker pull sameersbn/mysql:latest
latest: Pulling from sameersbn/mysql

～　ずらずらずらっと　～

Status: Downloaded newer image for sameersbn/mysql:latest
root@raidtest:~/docker_test/redmine#

```

## mysqlを動かしてみる＆設定

```shell-session
root@raidtest:~/docker_test/redmine# docker run --name=mysql-redmine -d --volume=/home/miyumiyu/docker_test/redmine/mysqll:/var/lib/mysql sameersbn/mysql:latest
ab5708218fd2de9d56ab6b8c4bcc3c0695484e4a17a8ebc87199da8f078e95d2
root@raidtest:~/docker_test/redmine#
```

※コマンド引数長い。。。
--volumeでマウントしてるとこは、先ほど作成したディレクトリです。

mysqlにredmineに必要なものを流し込みます。
必要な物は以下の通りです。

```sql
CREATE USER 'redmine'@'%.%.%.%' IDENTIFIED BY 'password' ; 
create database redmine_production character set utf8;
GRANT SELECT,LOCK TABLES,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON `redmine_production`.* TO 'redmine'@'%.%.%.%';
```

```shell-session
※コンテナの稼働状況の確認
root@raidtest:~/docker_test/redmine# docker ps
CONTAINER ID        IMAGE                    COMMAND             CREATED             STATUS              PORTS               NAMES
ab5708218fd2        sameersbn/mysql:latest   "/start"            3 minutes ago       Up 3 minutes        3306/tcp            mysql-redmine

※コンテナに一度入る
root@raidtest:~/docker_test/redmine# docker exec -ti mysql-redmine bash
root@ab5708218fd2:/#

※mysqlで必要なＳＱＬ文の流し込み
root@ab5708218fd2:/# mysql -u root
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> CREATE USER 'redmine'@'%.%.%.%' IDENTIFIED BY 'password' ;
Query OK, 0 rows affected (0.00 sec)

mysql> create database redmine_production character set utf8;
Query OK, 1 row affected (0.00 sec)

mysql> GRANT SELECT,LOCK TABLES,INSERT,UPDATE,DELETE,CREATE,DROP,INDEX,ALTER ON `redmine_production`.* TO 'redmine'@'%.%.%.%';
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
root@ab5708218fd2:/# exit
root@raidtest:~/docker_test/redmine#

※コンテナのＩＰアドレスを確認して
root@raidtest:~/docker_test/redmine# docker inspect --format '{{ .NetworkSettings.IPAddress }}' mysql-redmine
172.17.0.34
root@raidtest:~/docker_test/redmine#

※先ほど流したＳＱＬでredmineユーザでアクセスできるかどうか確認

root@raidtest:~/docker_test/redmine# mysql -h 172.17.0.34 -u redmine -ppassword redmine_production
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.43-0ubuntu0.14.04.1 (Ubuntu)

Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> exit
Bye
root@raidtest:~/docker_test/redmine#

※はい、つながりました
```

※ちなみにコンテナ起動時に【--name=mysql-redmine】って設定しましたので、わけのわからないコンテナＩＤとかでなく、名前でコンテナ名を指定してます。

## redmineの起動

※さらに引数長いよ！！

```shell-session
root@raidtest:~/docker_test/redmine# docker run --name=redmine -it --rm   --env='DB_TYPE=mysql' --env='DB_HOST=172.17.0.34' --env='DB_NAME=redmine_production'  --env='DB_USER=redmine' --env='DB_PASS=password'  --volume=/home/miyumiyu/docker_test/redmine/redmine:/home/redmine/data   sameersbn/redmine:latest
Generating SSH keys...

～ずらずらずらっと～

2015-07-03 11:01:47,392 INFO success: cron entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2015-07-03 11:01:47,393 INFO success: nginx entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
```

DB_TYPE → mysqlですよ
DB_HOST →　さっきIP確認したよ
DB_NAME → SQL文にあったよ！
DB_USER →　SQLで作ったよ
DB_PASS →　SQL文で指定したよ
--volume →　一番最初に作ったよ！

。。。長いですね

しばらくするとログが流れが止まったので起動したのかなぁ～　と
（初回起動はマイグレーションとか色々やってます）

とりあえず Ctrl+c でいちどコンテナを止めて

```shell-session
^C2015-07-03 11:05:05,945 WARN received SIGINT indicating exit request
2015-07-03 11:05:05,949 INFO waiting for cron, nginx, unicorn to die
2015-07-03 11:05:05,997 INFO stopped: nginx (exit status 0)
2015-07-03 11:05:06,002 INFO stopped: cron (terminated by SIGTERM)
2015-07-03 11:05:20,684 WARN killing 'unicorn' (126) with SIGKILL
2015-07-03 11:05:21,433 INFO waiting for unicorn to die
2015-07-03 11:05:22,452 INFO stopped: unicorn (terminated by SIGKILL)
root@raidtest:~/docker_test/redmine#
```

### バックアップデータのリストア

バックアップデータは
- DBのリストア
- redmineのディレクトリにリストア(files）

この二つです。

```shell-session

※DBのリストア
oot@raidtest:~/redmine-backup# mysql -h 172.17.0.34 -u redmine -ppassword redmine_production < redmine.sql
root@raidtest:~/redmine-backup#

※redmineでmysqldumpで固めたファイルは redmine.sqlというファイル名にしました

※filesのリストア

root@raidtest:~/docker_test# cd redmine/redmine/
root@raidtest:~/docker_test/redmine/redmine#
root@raidtest:~/docker_test/redmine/redmine# tar zxvf ../../../redmine-backup/redmine-files.tar.gz
～ずららっと～
```

## リストア完了　redmineを立ち上げてみる

問題なければこれでうまく起動するはず

```shell-session
root@raidtest:~/docker_test/redmine/redmine# docker run -d -p 80:80 -p 443:443 --name=redmine    --env='DB_TYPE=mysql' --env='DB_HOST=172.17.0.34' --env='DB_NAME=redmine_production'  --env='DB_USER=redmine' --env='DB_PASS=password'  --volume=/home/nyamagu/docker_test/redmine/redmine:/home/redmine/data   sameersbn/redmine:latest
db3147ab4f99a53fdce5cc458ba4efeb14a6a07728987e3c02f0ffb063e9d06f
root@raidtest:~/docker_test/redmine/redmine#

```

さらにオプション追加と削除です。
80ポートと442はそのままフォワーディング
（実験環境なのでポートが開いてたので＾＾）
-d でデタッチするため -it --rm  オプション除外です。

これでredmineが立ち上がってバックアップのデータが引き継いでいると思います。
。。。何に使えるかはなぞですが。。。。