« Dockerでkanon(Trac)を動かしてみた | トップページ | Dataloader+MariaDB Connector/JのDockerイメージを作りました »

2017年8月27日 (日)

Dockerでkanon(Trac)を動かしてみた2 - イメージの作成

前の記事で、多くの人は必要ない部分としてイメージの作成については触れていなかったので、ここで解説します。素人なので、間違っているところもあると思うので、お気づきの点は教えてください。
まずはファイルを取得します。
$ hg clone https://bitbucket.org/okazakiyuji/kanon
$ cd kanon
$ hg update org
リポジトリのファイル(ゴミもあります)の一覧です。
(1) Dockerfile
イメージを作成するためのファイル
(2) docker-entrypoint.sh
runで実行するときに起動するスクリプト
(3) kanon-setup
修正してあるインストーラ
(4) pkglist.rhel6
yumでインストールするパッケージ、ビルドの初期に実行したいのでKanonから抜き出した
(5) pluginlist
インストールするプラグインのURL
上書きするファイルの(3),(5)の修正内容
・元のKanonConductorでうまくインストールできない場所を修正する
 プラグインのインストール元をhttp->httpsに変更(3),(5)
・コンテナ化のために必要なこと
 インストールの初期の質問はなしにする(3)
 Maven, Jenkinsは無効に(3)
 SELinuxの無効化もしない(3)
 SampleProjectはインストールしない(3)
 サービスは動かさない(3)
残りの二つのファイルはデータの永続化のための処理が入っています。内容の説明はファイル内のコメントでご勘弁を
(1) Dockerfile
$ cat Dockerfile
FROM centos:6
MAINTAINER okazakiyuji <zaki@mbf.nifty.com>
# ロケールの設定
RUN localedef -f UTF-8 -i ja_JP /usr/lib/locale/ja_JP.UTF-8
# パッケージのインストール kanon-setupのものも先にインストールする
ADD pkglist.rhel6 /tmp/
RUN yum -y update && \
    yum -y install mercurial `cat /tmp/pkglist.rhel6` subversion-python && \
    yum clean all
# セットアップに必要な環境変数
ENV KANON_IN_CONTAINER 1
ENV MAVEN "n"
ENV JENKINS "n"
# マウントするフォルダの退避先を作成
RUN mkdir -p /tmp/save
# 上書きするファイルを/tmpにコピーする
COPY kanon-setup /tmp/kanon-setup
COPY pluginlist /tmp/pluginlist
# インストール、マウントするフォルダをコピー、いらないファイルの削除
RUN hg clone https://bitbucket.org/okamototk/kanonconductor \
        /tmp/kanonconductor && \
    cd /tmp && \
    cp kanon-setup kanonconductor/ && \
    cp pluginlist kanonconductor/ && \
    /tmp/kanonconductor/kanon-setup && \
    cd /tmp/save && \
    cp -r /var/opt/kanon ./var && \
    cp -r /etc/opt/kanon ./etc && \
    cp -r /opt/kanon/lib ./lib && \
    cd /tmp && rm -rf kanonconductor kanon-setup
# マウントする場所を明示しておく
VOLUME /opt/kanon/lib
VOLUME /etc/opt/kanon
VOLUME /var/opt/kanon
# ホストに接続するポート
EXPOSE 80
# 実行時に動くスクリプトのコピー
ADD docker-entrypoint.sh /
# 実行時に起動するファイルの指定
ENTRYPOINT ["/docker-entrypoint.sh"]
# 実行時のスクリプトに渡す引数(コマンド)
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
(2) docker-entrypoint.sh
$ cat docker-entrypoint.sh
#!/bin/bash
# マウントしたフォルダに何もない場合は初回の起動とする
if [ ! -d /var/opt/kanon/trac ] ; then
    # 初回起動時はコピーしていたファイルを戻す
    cp -r /tmp/save/lib /opt/kanon/
    cp -r /tmp/save/var/* /var/opt/kanon/
    cp -r /tmp/save/etc/* /etc/opt/kanon/
fi
if [ "$1" = '/usr/sbin/apachectl' ]; then
    # https://github.com/CentOS/CentOS-Dockerfiles/blob/master/httpd/centos6/run-httpd.sh を参照した
    rm -rf /run/httpd/*
    exec /usr/sbin/apachectl -D FOREGROUND
    exit 0
fi
# CMDで/usr/sbin/apachectl以外が指定された場合はそのままコマンドとして実行する
exec "$@"

|

« Dockerでkanon(Trac)を動かしてみた | トップページ | Dataloader+MariaDB Connector/JのDockerイメージを作りました »

Trac」カテゴリの記事

Docker」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Dockerでkanon(Trac)を動かしてみた2 - イメージの作成:

« Dockerでkanon(Trac)を動かしてみた | トップページ | Dataloader+MariaDB Connector/JのDockerイメージを作りました »