Dockerでkanon(Trac)を動かしてみた
長い間他の仕事をしていて、久しぶりにサーバ管理に戻ってきました。戻ってくると、VM(仮想マシン)が山ほどあり、Kanon使っているだけなのに、無駄にリソースを消費するし、多すぎてもう管理できなくなってます(T_T)。ということで、だいぶほったらかしていた「DockerでKanonを動かす」をやってみることにしました。Dockerfileの細かい内容は知らなくても使えるので、この記事ではGithubのイメージを持ってきて試す記事になってます。
○要件
・ コンテナのなかに複数プロジェクト(kanonなら問題なし)・ VMのなかに複数の仕切られた空間・ Dockerのビルドでインストールまで(ほぼ)完了する・ 実行時にプロジェクト作成/trac-admin実行できる・ データは永続化する・ 再起動時に自動起動
○調べて試したこと
・ コミットしないで終了して再起動すると元に戻る
データの永続化はボリュームをマウントする。 今回はデータボリュームコンテナにする
・ ビルド時にデータがある場所に、実行時に空のマウントするとデータは消える
Dockerfile内のビルドの最後で、マウントするフォルダ(/var/opt/kanon, /etc/opt/kanon, /opt/kanon/lib)を退避しておき、コンテナの起動時に動くスクリプトで、初回の一回だけデータをコピーする。
・ 複数のコンテナの起動はDocker-composeで簡単にできる
docker-compose.ymlファイル内のサービスの定義をコピーして、名前とポートとデータボリュームコンテナ名を変更するだけ。必要ならホストのFirewallはあけてください。
・ コンテナ内では一つのサービス、apacheはFOREGROUNDで
・ コンテナの自動再始動はrestart: alwaysでできるdocker-compose.ymlファイル内で指定
Kanonのコンテナを作成することは置いておいて、DockerHubから持ってきたイメージでの確認の手順です。
0. インストール
・ OSのインストール
CentOS の GNOME Desktopでインストールする,ユーザはsudo使えるように管理者にしておいた方がいいでしょう。
・ dockerのインストール
$ sudo yum update && yum -y install docker$ sudo systemctl start docker$ sudo systemctl enable docker
・ docker-composeのインストール
https://github.com/docker/compose/releases にインストール方法が書いてます(一応rcはやめて一つ前のものにする)
$ curl -L https://github.com/docker/compose/releases/download/1.15.0/docker-compose-`uname -s`-`uname -m` > docker-compose$ chmod +x ./docker-compose$ sudo mv ./docker-compose /usr/bin/docker-compose
1. フォルダ作成して移動
$ mkdir kanon_containers$ cd kanon_containers
2. docker-compose.ymlファイル作成
$ vi docker-compose.ymlversion: '2'services:kanon_1:# とりあえず動くように作ったコンテナを持ってくるimage: okazakiyuji/kanon:orgvolumes: # 運用時に変更されるフォルダにデータボリュームコンテナをマウントする- kanon_1-var:/var/opt/kanon- kanon_1-etc:/etc/opt/kanon- kanon_1-lib:/opt/kanon/libports:- "8081:80"restart: always # 再起動時に再始動kanon_2: # portとデータボリュームコンテナ名を変更して二つ目のKanonimage: okazakiyuji/kanon:orgvolumes:- kanon_2-var:/var/opt/kanon- kanon_2-etc:/etc/opt/kanon- kanon_2-lib:/opt/kanon/libports:- "8082:80" # 別のポートrestart: alwaysvolumes:kanon_1-var:driver: localkanon_1-etc:driver: localkanon_1-lib:driver: localkanon_2-var:driver: localkanon_2-etc:driver: localkanon_2-lib:driver: local
3. Dockerイメージを持ってくる
$ sudo docker pull okazakiyuji/kanon:orgコンテナの中身についてはあとで…
4. コンテナを起動する
$ sudo docker-compose up -d...コンテナ起動中...$ curl http://localhost:8081/trac<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Available Projects</title></head><body><h1>Available Projects</h1><ul></ul></body>※ localhost:8081/tracでプロジェクトがないが、エラーは出ないことを確認サーバの外から見えない場合はFirewallの設定を変更してください$ curl http://localhost:8082/trac...※ localhost:8082/tracでプロジェクトがないが、エラーは出ないことを確認
5. プロジェクトを作成
$ sudo docker-compose exec kanon_1 /bin/bash[root@6b47e7284acc /]# /opt/kanon/bin/kanon-create-project test1 svn default n...プロジェクトの作成...[root@6b47e7284acc /]# exit$ sudo docker-compose exec kanon_2 /bin/bash[root@fad824e04e58 /]# /opt/kanon/bin/kanon-create-project test2 svn default n...プロジェクトの作成...$ curl http://localhost:8081/trac<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>Available Projects</title></head><body><h1>Available Projects</h1><ul><li><a href="/trac/test1" title="My example project">test1</a></li></ul></body></html>※ localhost:8081/tracでプロジェクトtestが追加されていることを確認$ curl http://localhost:8082/trac...※ localhost:8082/tracでプロジェクトtest2が追加されていることを確認
6. 再起動してもコンテナが起動するかを確認
$ sudo reboot now...再起動...※ localhost:8081/tracでプロジェクトtestが追加されていることを確認
7. データコンテナを削除
確認後に削除したい場合は次のように$ sudo docker-compose down$ sudo docker volume ls...local kanoncontainers_kanon_1-etclocal kanoncontainers_kanon_1-liblocal kanoncontainers_kanon_1-varlocal kanoncontainers_kanon_2-etclocal kanoncontainers_kanon_2-liblocal kanoncontainers_kanon_2-var$ sudo docker volume rm kanoncontainers_kanon_1-etc kanoncontainers_kanon_1-lib kanoncontainers_kanon_1-var$ sudo docker volume rm kanoncontainers_kanon_2-etc kanoncontainers_kanon_2-lib kanoncontainers_kanon_2-var
これで運用までうまくいくと思うんですが…
| 固定リンク
「Trac」カテゴリの記事
- Dockerでkanon(Trac)を動かしてみた2 - イメージの作成(2017.08.27)
- Dockerでkanon(Trac)を動かしてみた(2017.08.27)
- TracLightningにコバンザメしてKanonと同様にPluginをインストールする(2014.04.13)
- kanonをTrac1.0.1+MySQL対応に変更してみた(2013.11.24)
- kanonをTrac1.0.1対応に変更してみた(2013.11.11)
「Docker」カテゴリの記事
- Dataloader+MariaDB Connector/JのDockerイメージを作りました(2017.11.05)
- Dockerでkanon(Trac)を動かしてみた2 - イメージの作成(2017.08.27)
- Dockerでkanon(Trac)を動かしてみた(2017.08.27)
この記事へのコメントは終了しました。
コメント