今流行のDockerなるものをしてみんとてするものなり。
これまでLibre10のインストール用にProxmoxホストの仮想マシン上でテストしていましたが、KVMなどの仮想マシンではなく、プロセスベースのコンテナ環境、Dockerが注目を浴びているということで、実際に触ってみました。
Docker自体の解説は他サイトに任せますが、特にDockerのメリットとして
- 隔離環境のためセキュリティ上問題になりにくい!?(LXCはバギーだという話も・・)
- プラットフォームから独立しているため、ホストを移行しやすい
- バージョニングが標準で搭載されており、変更を追いやすい
- Docker hubから簡単に必要なイメージを落とせる
等が挙げられます。
ホームページへ行ってみるとcentosのイメージが公式で配布されているということもあり、Libre10をDocker上で動かしてみることにしました。
さて、RHEL6/7用のLibre10のrpmでは速度、パーミッションの関係からsolrはtomcat上で、pythonのwebスクリプト(以後wsgi)はapacheからmod_wsgiモジュールを通して呼び出しています。
Docker上では出来るだけイメージを小さく、軽い状態が好ましいのでMacOSX用やその他プラットフォーム向けに採用している、solrをjettyで、wsgiをpython-cherrypyもしくはpython-paste+bottle.pyで動かすこととします。
そんなこんなで作ったDockerfileがこちらです
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
FROM centos MAINTAINER yukikaze/gn64 ENV LANG en_US.UTF-8 ENV LANGUAGE en_US:en ENV LC_ALL en_US.UTF-8 RUN yum -y install epel-release tar wget at sudo && yum -y clean all RUN yum -y install python-requests python-docopt python-crypto python-imaging python-sqlalchemy python-anyjson python-simplejson python-paste && yum -y clean all RUN yum -y install GraphicsMagick ImageMagick poppler-utils libjpeg-turbo-utils java && yum -y clean all RUN yum -y update; yum clean all; RUN echo "NETWORKING=yes" > /etc/sysconfig/network;groupadd libre10;useradd -g libre10 libre10; RUN wget https://bitbucket.org/gn64/libre10/get/1.5.1.tar.gz && tar xvzf 1.5.1.tar.gz && python2 ./gn64-libre10-c5e25263a440/www/libre10_exec.py install && rm -rf ./gn64-libre10-c5e25263a440 && rm -f ./1.5.1.tar.gz RUN chown -R libre10:libre10 /var/www/libre10 && chown -R libre10:libre10 /opt/libre10 && chmod 777 /usr/local/bin/libre10* EXPOSE 8008:8008 EXPOSE 8983 CMD /bin/bash -c "atd&sudo -u libre10 /bin/bash -c 'export PATH=$PATH:/usr/local/bin && libre10-wsgi& sleep 5; export PATH=$PATH:/usr/local/bin && cd /opt/libre10/solr/example && java -jar start.jar& sleep 30;/usr/local/bin/libre10 update;sleep 10;/usr/local/bin/libre10 import;/bin/bash'" |
Docker Hubに上げてあるので以下のようにして使うことが出来ます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
まずimageをダウンロード # docker pull gn64/libre10 ~~~~~~略 ダウンロードされているのを確認 # docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE gn64/libre10 latest 1ab8dc076bb5 6 hours ago 972.8 MB libre10を起動(およそ40秒ほどかかります) # docker run -d --net=host -t gn64/libre10 起動を確認 # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 380d5e697c1e gn64/libre10:latest "\"/bin/sh -c '/bin/ 38 seconds ago Up 36 seconds furious_hoover |
これで、port8008へアクセスするとLibre10にアクセスできます。
本当に手軽ですね!
実際に使う際にはこのイメージファイルをベースにpdfファイルを追加、インデックス後
1 |
# Docker commit <id> <name> |
にてpdf追加後のイメージを作成、
1 |
# docker save IMAGE > filename.tar |
でイメージをセーブし持ち運ぶことが可能になります。
複数のLibre10を同時起動したい場合やポートを変えたい場合は
#docker run の–net=hostを削除し、portをしてすれば行けるはずです。