Docker HubにRedmineのofficialイメージがある。
これを使ってDocker CE(17.03)上でコンテナをあげようとしたのだけど、うまく行かなかった。
Official Repository redmine
https://hub.docker.com/_/redmine/
ここのREADME.md上にdocker-compose.ymlが
version: '2'
services:
redmine:
image: redmine
ports:
- 8080:3000
environment:
REDMINE_DB_MYSQL: db
REDMINE_DB_PASSWORD: example
depends_on:
- db
restart: always
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: example
MYSQL_DATABASE: redmine
restart: always
と書かれているので、既にjenkins(tomcat)で使ってる
8080のところを3000にして動かそうとしたら..
redmine コンテナがやたらRestartを繰り返すのだ。
で、docker-compose logs redmine したら
gem失敗していることに気づく。
どうも、proxyが引けないらしい..
ということでdocker-compose.yml上の environment: に
環境変数 HTTP_PROXY (と念のため HTTPS_PROXY)をセットした。
で、開こうとしたら..
http://redmine.. :3000/ から admin/admin でログインはできたのだけど、
管理画面の先頭に最初だけ出てくる日本語環境の「デフォルト設定のロード」ボタンを
押すと
デフォルト設定がロードできませんでした: Mysql2::Error: Incorrect string value: '\xE7\xAE\xA1\xE7\x90\x86...'
なるメッセージが出てしまう..
これ..MySQL..じゃなく mariadb の文字コード設定の問題がでているらしい。
mariadbイメージ..official docker hubサイトを調べてみた。
Official Repository mariadb
https://hub.docker.com/_/mariadb/
残念ながら良さげな環境変数はなかった。
environmentを1行加えるだけという訳にはいかないらしい..
だが、ホスト側のcnfファイルを追加で読んでくれるconf.dがexposeされているので
これを使った。
最終型のdocker-compose.ymlは大体以下のような感じ。
version: '2'
services:
redmine:
image: redmine:latest
restart: unless-stopped
volumes:
- ./data/redmine:/usr/src/redmine/files
ports:
- 3001:3000
environment:
- REDMINE_DB_MYSQL=mariadb
- REDMINE_DB_PASSWORD=example
- HTTP_PROXY=http://your.proxy.server:8080
- HTTPS_PROXY=http://your.proxy.server:8080
depends_on:
- mariadb
mariadb:
image: mariadb:latest
restart: unless-stopped
volumes:
- ./data/mariadb/conf:/etc/mysql/conf.d
- ./data/mariadb/data:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=example
- MYSQL_DATABASE=redmine
イメージのタグ、latest だと運用上マズイので、
本番ではキチンとバージョンを指定してやるようにしてください。
最初に docker-compose up する前に用意した
./data/mariadb/conf/server.cnf はホスト側のmariadbの本物(/etc/my.cnf.d/server.cnf)をつかったが、
たぶん
[mysqld]
character-set-server=utf8
だけでも大丈夫だとは思う。試してないけど...
運用上restartはalwaysより最後のdocker-compose stopが効くコッチがよかろうということで
unless-stoppedに変更している。
あとバックアップをdocker-compose stopして ./data を
まるっとコピーするので、exposeされたvolumeは全部使った。
SELINUX=enforcing のままredmineを導入する場合は
念のため chcon -Rt svirt_sandbox_file_t ./data しておいたほうがいいだろう。
にしても..
ひさしぶりにdocker-compose使ったが..
相当手が入っているなあ..
裏でネットワーク用コンテナ上がるようになっていて
bridgeだのhostだのnullだの選択できるようになってる..
docker-compose.ymlファイルごとにIPアドレスが172.17.0.2やら172.20.0.2やら
ちょっとづつ変わる。
コンテナ側のリゾルバはみな127.0.0.11をさしていて
どうもこれがホスト側のDNSリソルバ設定につながっているらしい..
なのでホスト側IPアドレスのエイリアスアドレスなのかと
内部からホスト側を呼ぶときにコレを使おうとしたら
うまく行かなかった...
ホスト側のFQDNをキチンとDNSで登録するかhostを使えということらしい..
裏技として..かならず作成されるデフォルトbridgeのゲートウェイIP
172.17.0.1 をホスト側のIPとしてつかうことはできる..けど美しくない!
ホストサーバをFreeIPAとかでたてていて
DESSEC設定変えたくないばっかりに
FreeIPAにはフォワーダ指定なしにして
ホスト側のリゾルバにフォワーダだけ登録して抜けていたが
このせいでホスト側のDNSサーバのforwarderをセットしなくちゃならない羽目にあった..
Dockerは、ますます重くなっていくのだろうか...
これじゃVMwareやVirtualBoxとかわらなくなってきちまうよ..
0 件のコメント:
コメントを投稿