実を言うと次の方法だと brew update && brew upgrade すると動かなくなる場合があっていろいろ面倒だったんだけど最近は vm で docker で container だよねということで以下略。
ひとりでしか使わないからバックエンドは sqlite でもいいんだけど、 MariaDB を使うことにする。
docker machine 作成
できるだけ用途別にわけたほうが楽だと思うので Redmine 用の docker machine をつくる。
docker-machine create --driver virtualbox redmine
eval "$(docker-machine env redmine)"
コンテナー群
以下、各コンテナーを順に作っていくけど手っ取り早く動く環境がほしいという場合は一番最後からみていくといい。
MariaDB コンテナー
初期設定のままだと UTF-8 が使えない = 日本語のチケットが切れないので設定を次の位置に作って docker run 時に指定する。
mkdir -p ~/docker/mariadb/redmine/conf
[mysqld]
character-set-server=utf8
<password-for-root> には適当に root のパスワードを指定すること。
docker run \
-d \
--name mariadb \
-v ~/docker/mariadb/redmine/conf:/etc/mysql/conf.d \
-v /var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=<password-for-root> \
-e MYSQL_DATABASE=redmine \
--restart always \
mariadb:latest
/var/lib/mysql 以下にデータが格納されるのでバックアップを取りやすいように docker volume にしてる。
で、実際にバックアップをとるときはこう。
docker run --rm --volumes-from mariadb -v $(pwd):/backup centos tar czvf /backup/backup.tar.gz /var/lib/mysql
mysql でつなぎたいときは次のコマンドを打たないといけないみたい。長い。
docker run \
-it \
--link mariadb:mysql \
--rm \
mariadb:latest \
sh -c 'exec mysql -h"$MYSQL_PORT_3306_TCP_ADDR" -P"$MYSQL_PORT_3306_TCP_PORT" -uroot -p"$MYSQL_ENV_MYSQL_ROOT_PASSWORD"'
ログを確認するには docker logs mariadb 。
Redmine コンテナー
WEBrick 版と Passenger 版があるんだけど好みで。 Passenger 版のほうがちょっと速い気がしないでもない。
docker run \
-d \
-p 3000:3000 \
--name redmine \
-v /usr/src/redmine/files \
--link mariadb:mysql \
--restart always \
redmine:passenger
こちらもログを確認するには docker logs redmine 。
docker-machine ip redmine でつなぐ先の IP アドレスがわかるのでポート 3000 でつなぎにいく。たとえば http://192.168.99.101:3000/ 。
初期ユーザーは admin 、パスワードも admin 。あとはブラウザーから設定すればいい。楽だね。
Docker Compose で半自動化する
ここまで全部コマンドでやってきたけど Docker Compose を使うと各コンテナーのオプションや依存関係を設定として保存できる。
https://docs.docker.com/compose/gettingstarted/
https://docs.docker.com/compose/compose-file/
Docker Toolbox には Docker Compose も同梱されているのでありがたく使わせてもらう。
次の内容をたとえば ~/docker/redmine/docker-compose.yml として保存しておく。
mariadb:
image: mariadb:latest
container_name: mariadb
volumes:
- ~/docker/mariadb/redmine/conf:/etc/mysql/conf.d
- /usr/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: <password for root>
MYSQL_DATABASE: redmine
restart: always
redmine:
image: redmine:passenger
container_name: redmine
ports:
- 3000:3000
volumes:
- /usr/src/redmine/files
links:
- mariadb:mysql
restart: always
で、 ~/docker/redmine/ で docker-compose up -d すると全部いい感じで立ち上がってくれる。