Translate

2015年4月10日金曜日

CentOS上にRedmineサーバ(sameersbn/redmine)をDockerコンテナとして立ち上げる



実はRedmineの公式イメージはDocker Hubにはない(この文章を書いている時点では)。

はじめ自分でDockerfileを書こうとしたのだけど、Subversionと違って難易度が..
gemインストール中にmariadbプロセスが上がっていないとダメな箇所にぶつかって挫折..
素直にDocker Hub上で公開しているイメージを使うことにした。

今回使ったのは sameersbn/redmine

選んだ理由は、単に一番ダウンロードされているから(この文章を書いている時点では)。
この方、Redmine2.6.xと3.0.x両方だしており、しかもこのイメージMySQL/postgreSQL両方サポートしており、しかもmemcachedまで使えるようにしている。
ということで、実用向きだなと勝手に判断した。


今回すでにDocker1.5および最新のdocker-composeをインストールした環境で動かした。

具体的な環境はこちらを参照のこと。


CentOS上には最初rootしかつくっていなかったので、rootで作業する。

Redmineのバージョンは3.0.1もあったが、プラグインのサポート状況から現時点では2.6.3のほうを選んだ。

以下docker-compose.yml

postgresql:
  image: sameersbn/postgresql:9.4
  volumes:
    - /home/10001/postgresql/data:/var/lib/postgresql
  environment:
    - DB_USER=redmine
    - DB_PASS=admin123
    - DB_NAME=redmin
memcached:
  image: sameersbn/memcached:latest
redmine10001:
  image: sameersbn/redmine:2.6.3
  links:
    - postgresql:postgresql
    - memcached:memcached
  volumes:
    - /var/run/docker.sock:/run/docker.sock
    - /usr/bin/docker:/bin/docker
    - /home/10001/redmine/data:/home/redmine/data
  environment:
    - DB_USER=redmine
    - DB_PASS=admin123
    - DB_NAME=redmine
    - SMTP_HOST=smtp_server_fqdn
    - SMTP_PORT=25
  ports:
    - "10001:80"

このファイルと同じディレクトリで「docker-compose up」と実行すればフロントエンドで、「docker-compose up -d」と実行すればバックエンドで動作する。
当然初回はpullするのでとても遅い。

VOLUME指定で、必要最小限の部分はホスト側のファイルシステムを使っており、再起動してもデータは永続化される。

上記のdocker-compose.ymlをそのまま実行すると、Dockerホスト上のポート10001番でHTTPサーバがあがる。

なんでこうしたかというと、各Redmineは別々の人に管理してもらいたいので、ポート番号と同じ名前のユーザ名でCentOSアカウントを作って、そこの上にVOLUME指定先(/home/10001..という部分を選択しており、各管理者にホームディレクトリ上のファイルをWinSCPなどでバックアップしてもらおうかな..と考えたためだ。

Redmineプラグインは後付でもインストールできる。
各自のアカウントでdocker execでログインして~redmine以下のpluginフォルダでgitなりwgetなりでダウンロードして再起動すれば、起動時に反映される。


SMTP_HOSTSMTP_PORTなどの環境変数の部分を書き換えてやればHTTPSにする方法GmailやほかのSSL-SMTPメールサーバなどにも対応できるので、sameersbn/redmine上にあるドキュメントを確認すること。



各社で個別のカスタマイズなどをする場合各ホームのディレクトリ上にカスタマイズ済みファイルをおいておいけばOKだ。うちの会社でも初期構築時Redmineのナマのチケットをつかわずに、ある程度社内で標準化したカスタマイズ済チケットになるように配置してあげている。

Subversionもymlファイル上に書いておいたほうがいいかなとも考えたが、Redmine上で管理する複数のプロジェクトがそれぞれ異なる構成管理サーバを使いたいということもありうるので、やめておいた。

本当は個別にホスト経由でdocker execさせたいのだけど..ホスト上のすべてのイメージやコンテナが見えちゃうからなあ..そうなるとDockerにCloudStackのようなプロジェクトだとかグループだとかの概念をいれてかないといけないし..

..GoogleのKなんとかツールとか使うかなあ..

0 件のコメント:

既存アプリケーションをK8s上でコンテナ化して動かす場合の設計注意事項メモ

既存アプリをK8sなどのコンテナにして動かすには、どこを注意すればいいか..ちょっと調べたときの注意事項をメモにした。   1. The Twelve Factors (日本語訳からの転記) コードベース   バージョン管理されている1つのコードベースと複数のデプロイ 依存関係 ...