Ruby On railsで開発されているプロジェクト管理ツールRedmineをDocker環境に導入します。プロジェクト管理ツールとしては、以前Tracを自宅SVのLAMP環境に導入し、バージョン管理ツールのSubversionと連携して運用していました。ですが落雷による停電で消失してしまい今はありません。
今回はプロジェクト管理ツールとしてTracではなく巷で評判のRedmineを、ソース管理ツールはSubversionではなくGitHubのOSS版かつ自宅サーバで運用可能なGitlabと連携予定です。まずは手始めにRedmine環境を構築します。
目次
1.目標とするRedmineのURL
マニュアル通りの手順でRedmineを導入すると参照するWebページはポート3000になります。
例)URLが「hoge3.com」の場合、URLは「http://hoge3.com:3000」
これはスマートではないので、:3000無しのサブドメインでアクセスできるようにします。以前導入した「jwilder/nginx-proxy」にて上記ポート3000にリバースプロキシされるようDocker環境を構築します。
目標とするredmineのURL)「http://redmine.hoge3.com」
2.Dockerコンテナ連携方針
RedmineのDockerイメージは安定性と安全性を考慮してオフィシャル版を使用します。使用するDBはmysqlとしこちらもオフィシャル版です。redmineコンテナとmysqlコンテナからデータボリュームをマウントしコンテナを再起動してもRedmineに登録したデータが引き継がれるようにします。
(1)データボリューム
data/mysqlディレクトリをmysqlコンテナにマウント
data/redmine/filesディレクトリをRedmineコンテナにマウント
(2)フォルダ構成
Dataディレクトリ以外のディレクトリはダミーです。
1 2 3 4 5 6 7 8 9 10 11 12 |
/home/docker/test/gitlredmine gitlredmine │ docker-compose.yml ├─data │ │ │ ├─mysql │ │ │ └─redmine │ └ files ├─redmine │ └─DB |
3.Docker-Composeの設計
(1)コンテナサービス一覧
コンテナサービス名 | 役割 | 関連サービス |
sqldata | mysql用のデータボリュームコンテナ | dB(マウント) |
redminedata | Redmine用のデータボリュームコンテナ | redmine(マウント) |
redmine | redmineタスク | db(リンク) |
db | mysqlタスク |
(2)docker-compose.yml
以下が作成したdocker-compose.ymlです。ドメインとパスワードは変更していますがそれ以外は実運用版です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
version: '2' services: sqldata: image: busybox volumes: - ./data/mysql:/var/lib/mysql redminedata: image: busybox volumes: - ./data/redmine/files:/usr/src/redmine/files redmine: image: redmine:latest links: - "db" depends_on: - "db" restart: always environment: REDMINE_DB_MYSQL: db REDMINE_DB_PASSWORD: "rootpass" VIRTUAL_HOST: redmine.hoge3.com VIRTUAL_PORT: 3000 volumes_from: - redminedata db: image: mysql command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci restart: always environment: MYSQL_ROOT_PASSWORD: "rootpass" MYSQL_DATABASE: redmine TZ: "Asia/Tokyo" volumes: - /etc/localtime:/etc/localtime:ro volumes_from: - sqldata networks: default: external: name: common_link |
【Redmine設定】
11行目から24行目までがredmineコンテナの設定です。
19行目にある環境設定の「REDMINE_DB_MYSQL」キーがredmineコンテナからmysqlを使用する設定です。mysqlコンテナのサービス名「db」を指定します。
20行目の「REDMINE_DB_PASSWORD」キーがmysqlコンテナで指定しているmysqlのrootパスワード値「”rootpass”」になります。30行目の値と同一です。
21行目の「VIRTUAL_HOST」キーにはredmine用のURLを指定します。ここでは前述の通り「redmine.hoge3.com」を指定しています。VIRTUAL_HOSTキーは「jwilder/nginx-proxy」がリバースプロキシする際に参照します。
22行目の「VIRTUAL_PORT」キーにはredmineがデフォルトで設定する参照ポート番号「3000」を指定します。このキーも同様に「jwilder/nginx-proxy」がリバースプロキシする際に参照します。
【mysql設定】
25行目から36行目までがmysqlコンテナの設定です。
27行目の「command」キーの値はredmineでmysqlを使用する際に必要となる日本語化の設定です。これが無いとredmineで日本語文字列を登録できません。
31行目の「MYSQL_DATABASE」キーは起動時に作成するDB名になります。今回はredmineコンテナが必要とするDB名の「redmine」を指定します。
今回は新規追加したredmineコンテナと変更したmysqlコンテナの設定についてのみ説明しました。これ以外の設定については以下の記事を参照してください。
Docker-Composeでnginx,php,mysqlの3コンテナを連携する
4.Redmineの動作確認
(1)Docker-Composeの起動と確認
Docker-Compose.ymlファイルのあるディレクトリに移動し以下のコマンドでコンテナを起動します。
1 2 |
# cd /home/docker/test/gitlredmine/ # docker-compose up -d |
docker psなどで起動確認が出来たら次に進めます。
(2)リバースプロキシ設定確認
「jwilder/nginx-proxy」コンテナのnginx設定ファイルdefault.confにredmineコンテナへのリバースプロキシ設定が追加されているかコンテナに接続して確認します。
1 2 |
# docker exec -it nginx-proxy bash root@822b6977a46f:/app#cat /etc/nginx/conf.d/default.conf |
/etc/nginx/conf.d/default.confの内容抜粋
1 2 3 4 5 6 7 8 9 10 11 12 13 |
# redmine.hoge3.com upstream redmine.hoge3.com { ## Can be connect with "common_link" network # gitlredmine_redmine_1 server 172.21.0.11:3000; } server { server_name redmine.hoge3.com; listen 80 ; access_log /var/log/nginx/access.log vhost; location / { proxy_pass http://redmine.hoge3.com; } |
上記の通り「http://redmine.hoge3.com」へのアクセスがredmineコンテナの3000番ポートへ転送されていることが分かります。
(3)Redmine接続確認
webブラウザからhttp://redmine.hoge3.comで接続します。
接続できました。
(4)ユーザー登録確認
mysqlの日本語設定が正常であるかどうかユーザー登録をして確認します。
(3)画面右上の登録するを選択し表示されるユーザー情報に日本語を含めて送信します。
これで正常に登録できればmysqlへの日本語設定は問題ありません。
以降Redmineを使用できます。
5.参考にさせて頂いたサイト
(改訂版) Docker でオフィシャルな GitLab イメージと Redmine イメージのコンテナを連携させる
ArchLinux上で運用していたRedmineをDockerコンテナに移行したときのメモ
ありがとうございます。