Help us understand the problem. What is going on with this article?

Kanon関連コンテナをまとめて起動する〜KanonOrchestra

More than 1 year has passed since last update.

はじめに

Kanon, Jenkins, MariaDBのコンテナ化ができたので、これらのコンテナをまとめて扱う方法を作ってみました。Kanonの世界なら、「お友達のHud美さん、マリアちゃんと楽団を作ったよ。」ってかんじでしょうか。
docker, docker-composeのセットアップ済で、データの永続化などについてある程度の知識があることを前提にしています。

構成

リポジトリ

リポジトリは https://bitbucket.org/okazakiyuji/kanonorchestra/src/default/ です

ファイル/フォルダ

ファイルはイメージ化しているので意外に少ないです。

ファイル/フォルダ名 内容
.env proxy設定をコンテナに渡す
create-env.sh proxy設定をもとに.envを作る
docker-compose.yml コンテナを起動するためのファイル
jenkins_home jenkinsのプロジェクトとHud美さんなど
マウントして使用

主に変更するファイルのdocker-compose.ymlを見てみましょう。リポジトリの中のものはデータの永続化に必要なVolume関連はすべてコメントにしてあります。次にあげるのはVolumeのコメントを外した例です。

docker-compose.yml
version: '2'
services:
  db01:
    image: okazakiyuji/mariadb
    volumes:
      - db01-data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=kanonrpw
      - TZ="Asia/Tokyo"
    restart: always
  kanon01:
    image: okazakiyuji/kanoncontainer:v0.2b1
    hostname: kanon01
    volumes:
      - kanon01-opt:/opt/kanon
      - kanon01-etc:/etc/opt/kanon
      - kanon01-var:/var/opt/kanon
      - kanon01-auth:/etc/opt/auth
    environment:
      - MYSQL_HOST=db01
      - MYSQL_PORT=3306
      - MYSQL_USER=root
      - MYSQL_USER_PASSWORD=kanonrpw
      - KANON_HOST=kanon01
    env_file: .env
    ports:
      - "8001:80"
    links:
      - db01
    restart: always
  jenkins:
    image: okazakiyuji/jenkins
    links:
      - kanon01
    hostname: jenkins
    env_file: .env
    ports:
      - "8088:8080"
    volumes:
      - ./jenkins_home:/var/jenkins_home:rw
    restart: always
volumes:
  db01-data:
    driver: local
  kanon01-opt:
    driver: local
  kanon01-var:
    driver: local
  kanon01-etc:
    driver: local
  kanon01-auth:
    driver: local

サービスをコピーしてポートなどぶつからないようにしていただければ複数のサービスを起動することも可能です。

コンテナ(サービス)

サービス名 内容
db01 MariaDB TracプロジェクトのDB用
Kanon01 Apache+Trac+SVN/HG/Git
Jenkins ほぼJenkinsの標準コンテナです

使い方

  • まずはリポジトリからファイルを取得します

hg clone https://okazakiyuji@bitbucket.org/okazakiyuji/kanonorchestra

  • proxyが必要な環境ではcreate-env.shを実行し.envファイルを作成します
  • docker-compose.ymlを編集します
  • コンテナを起動します
docker-compose up -d
  • サンプルプロジェクトを作成します
docker-compose exec kanon01 /tmp/create-sample-project.sh
  • プロジェクトを作成します 次のコマンドを実行して質問に答えていってください
docker-compose exec kanon01 /opt/kanon/bin/kanon-create-project プロジェクト名
  • ブラウザでサーバ:ポート8001に接続しTracが動いていることを確認してください
    trac.png

  • ブラウザでサーバ:ポート8088に接続しJenkinsが動いていることを確認してください
    jenkins.png

複数プロジェクト

Kanonは標準で複数プロジェクトに対応していますが、隣のプロジェクトがインストールしたプラグインや登録ユーザの影響を受けないようにするために1仮想マシンに数プロジェクトに抑える運用することが多いと思います。今回はコンテナになっているので、docker-composeファイルのkanon01コンテナをコピーして02,03と増やすだけで済みます。次にKanon2コンテナ構成のdocker-compose.ymlがいるを挙げています。これを参考にしてください。

docker-compose.yml
version: '2'
services:
  db01:
    image: okazakiyuji/mariadb
    volumes:
      - db01-data:/var/lib/mysql
    environment:
      - MYSQL_ROOT_PASSWORD=kanonrpw
      - TZ="Asia/Tokyo"
    restart: always
  kanon01:
    image: okazakiyuji/kanoncontainer:v0.2b2
    hostname: kanon01
    volumes:
      - kanon01-opt:/opt/kanon
      - kanon01-etc:/etc/opt/kanon
      - kanon01-var:/var/opt/kanon
      - kanon01-auth:/etc/opt/auth
    environment:
      - MYSQL_HOST=db01
      - MYSQL_PORT=3306
      - MYSQL_USER=root
      - MYSQL_USER_PASSWORD=kanonrpw
      - KANON_HOST=kanon01
    env_file: .env
    ports:
      - "8001:80"
    links:
      - db01
    restart: always
  kanon02:
    image: okazakiyuji/kanoncontainer:v0.2b2
    hostname: kanon02
    volumes:
      - kanon02-opt:/opt/kanon
      - kanon02-etc:/etc/opt/kanon
      - kanon02-var:/var/opt/kanon
      - kanon02-auth:/etc/opt/auth
    environment:
      - MYSQL_HOST=db01
      - MYSQL_PORT=3306
      - MYSQL_USER=root
      - MYSQL_USER_PASSWORD=kanonrpw
      - KANON_HOST=kanon01
    env_file: .env
    ports:
      - "8002:80"
    links:
      - db01
    restart: always
  jenkins:
    image: okazakiyuji/jenkins
    links:
      - kanon01
    hostname: jenkins
    env_file: .env
    ports:
      - "8088:8080"
    volumes:
      - ./jenkins_home:/var/jenkins_home:rw
    restart: always
volumes:
  db01-data:
    driver: local
  kanon01-opt:
    driver: local
  kanon01-var:
    driver: local
  kanon01-etc:
    driver: local
  kanon01-auth:
    driver: local
  kanon02-opt:
    driver: local
  kanon02-var:
    driver: local
  kanon02-etc:
    driver: local
  kanon02-auth:
    driver: local

これから

とりあえずは、マウントしているボリュームをバックアップしておけば大丈夫ですが、私がやっている方法をもう少し使えないか検討中です。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away