Dockerで遊んでみる 第三弾です。
調子に乗ってこんどはredmineをいってみます。
※大前提として既存のredmineはバックアップとっています。
(DBとfilesディレクトリです)
http://redmine.jp/faq/system_management/backup/
ちなみに使ってるDBはmysqlになります。
いつものように、こちらのページを参照して順番にredmineをインストールしていきます。
https://registry.hub.docker.com/u/sameersbn/redmine/
環境構築とイメージの取得
※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を動かしてみる&設定
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に必要なものを流し込みます。
必要な物は以下の通りです。
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'@'%.%.%.%';
※コンテナの稼働状況の確認
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で必要なSQL文の流し込み
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#
※コンテナのIPアドレスを確認して
root@raidtest:~/docker_test/redmine# docker inspect --format '{{ .NetworkSettings.IPAddress }}' mysql-redmine
172.17.0.34
root@raidtest:~/docker_test/redmine#
※先ほど流したSQLで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】って設定しましたので、わけのわからないコンテナIDとかでなく、名前でコンテナ名を指定してます。
redmineの起動
※さらに引数長いよ!!
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 でいちどコンテナを止めて
^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)
この二つです。
※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を立ち上げてみる
問題なければこれでうまく起動するはず
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が立ち上がってバックアップのデータが引き継いでいると思います。
。。。何に使えるかはなぞですが。。。。