LoginSignup
17
17

More than 5 years have passed since last update.

Docker Toolbox で Mac に Redmine をたてる

Last updated at Posted at 2015-11-13

実を言うと次の方法だと 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
utf8.cnf
[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 として保存しておく。

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 すると全部いい感じで立ち上がってくれる。

17
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17