(ヽ´ω`) < 助けてほしいマン

わからないことを助けてほしいマンが書くブログ

(ヽ'ω`) < Moinmoin on CentOS6のDockerfile

(ヽ'ω`) < 初めてのDockerfile

Moinmoinのインストール手順を記事にしているときに、「あれ?この手順ってDockerfileに書けるんじゃない?」と気づいたので、Dockerfileの記述練習も兼ねて書いてみた。

(ヽ'ω`) < 中身

FROM centos:centos6
MAINTAINER tsugihagi

ENV SITE_NAME Moinmoin Wiki on Docker
ENV ADMIN_NAME admin

RUN yum install -y httpd mod_wsgi tar; yum clean all

WORKDIR /usr/local/src
RUN curl -O http://static.moinmo.in/files/moin-1.9.7.tar.gz
RUN tar xvzf moin-1.9.7.tar.gz
RUN rm moin-1.9.7.tar.gz

WORKDIR /usr/local/src/moin-1.9.7
RUN python setup.py install --force

RUN cp /usr/share/moin/server/moin.wsgi /usr/share/moin
RUN cp /usr/share/moin/config/wikiconfig.py /usr/share/moin

RUN echo "WSGIScriptAlias /   /usr/share/moin/moin.wsgi" > /etc/httpd/conf.d/moin.conf
RUN echo "WSGIDaemonProcess moin user=apache group=apache processes=5 threads=10 maximum-requests=1000 umask=0007" >> /etc/httpd/conf.d/moin.conf
RUN echo "WSGIProcessGroup moin" >> /etc/httpd/conf.d/moin.conf
RUN echo "WSGISocketPrefix /var/run/moin-wsgi" >> /etc/httpd/conf.d/moin.conf

RUN echo "sys.path.insert(0, '/usr/lib/python2.6/site-packages')" >> /usr/share/moin/moin.wsgi
RUN echo "sys.path.insert(0, '/usr/share/moin')" >> /usr/share/moin/moin.wsgi

RUN chown -R apache:apache /usr/share/moin
RUN chmod -R ug+rwX /usr/share/moin
RUN chmod -R o-rwx /usr/share/moin

RUN echo "    sitename = u\"$SITE_NAME\"" >> /usr/share/moin/wikiconfig.py
RUN echo "    page_front_page = u\"FrontPage\"" >> /usr/share/moin/wikiconfig.py
RUN echo "    superuser = [u\"$ADMIN_NAME\",]" >> /usr/share/moin/wikiconfig.py

ENTRYPOINT apachectl -D FOREGROUND

EXPOSE 80

上記の内容を適当なディレクトリ上でDockerfileという名前で保存。

(ヽ'ω`) < イメージの作成

docker buildコマンドでイメージを作成する。タグ名はお好きなもので。

[root@localhost ~]# cd /tmp
[root@localhost tmp]# vi Dockerfile
## (上記の内容を貼り付ける)
[root@localhost tmp]# docker build --tag=test/moin .
Uploading context 6.144 kB
Uploading context
Step 0 : FROM centos:centos6
 ---> 68eb857ffb51
...(省略)...
## 作成が完了したら docker imagesで確認
[root@localhost tmp]# docker images
REPOSITORY              TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
test/moin               latest              299bf7d7eae8        52 seconds ago      456.2 MB
centos                  centos5             5a1ebaa356ff        4 weeks ago         484 MB
centos                  centos7             70214e5d0a90        5 weeks ago         224 MB
centos                  latest              70214e5d0a90        5 weeks ago         224 MB
centos                  centos6             68eb857ffb51        5 weeks ago         212.7 MB
[root@localhost tmp]#

(ヽ'ω`) < コンテナの起動

ENTRYPOINTでApacheをフォアグラウンドで起動しているので、ポートマッピングを指定して起動する。

# docker run -d -p 80:80 test/moin:latest

(ヽ'ω`) < ようこそMoinmoinへ

これで、

http://(ホストのIP)/

にアクセスすればMoinmoin Wikiの画面が表示される。

デフォルト設定では管理者名は"admin"となっているので、"admin"という名前のユーザを作成して、言語の設定を行う。

(ヽ'ω`) < オプション

docker buildコマンドの実行前Dockerfile内の以下のENVの値を変更することで、多少のカスタマイズが可能。

  • SITE_NAME - Wikiの名前。wikiconfig.pysitenameの値となる
  • ADMIN_NAME - 管理者名。wikiconfig.pysuperuserの1つ目の値となる(複数不可)

(ヽ'ω`) < なんかすごいね

初めてDockerfileを書いて、イメージの作成から動作確認までしたけど、すんごい楽。
楽だし、なんかすごい。あいつら未来に生きてんな感がビシビシ出てる。

とはいえ、実運用に使おうとするなら色々調整が必要な部分があると思うので、あくまでお試し程度のDockerfileということで。