Docker ことはじめ
またも更新まで、間が開いてしまった。反省。
春さきより、気になっていたDockerをはじめる。
日本語の良い記事が見つからず、辞書を片手に、docker user guide。
最初に躓いたのが、ubuntuを使って試用したのだが、64bitしか対応していないため、
64bit版のubuntu15.04をインストール。
一通りガイドに沿って手を動かし、python.appをコンテナで動かしてみるが、身につかない。
一昨年から続けているPlayFrameworkを利用したproductsをDockerコンテナ上で動かしてみることに挑戦。
構成は、ひとつのコンテナ上で、playアプリとmysqlを構成してみる。dockerfileは以下
# This is a comment FROM ubuntu:14.10 MAINTAINER Yuichiro Uyama <yuichiro.uyama@gmail.com> # java install RUN apt-get update RUN apt-get install software-properties-common -y RUN add-apt-repository ppa:webupd8team/java -y RUN apt-get update RUN echo debconf shared/accepted-oracle-license-v1-1 select true | debconf-set-selections RUN apt-get install oracle-jdk7-installer -y # scala install RUN cd /usr/local/src/ RUN wget http://downloads.typesafe.com/scala/2.11.0/scala-2.11.0.tgz RUN tar zxvf scala-2.11.0.tgz RUN mv scala-2.11.0 /usr/local/ RUN ln -s /usr/local/scala-2.11.0 /usr/local/scala ENV PATH=$PATH:/usr/local/scala/bin # git install RUN add-apt-repository ppa:git-core/ppa RUN apt-get update RUN apt-get -y install git # playframework! install RUN cd /usr/local/src/ RUN wget http://downloads.typesafe.com/play/2.1.1/play-2.1.1.zip RUN apt-get -y install unzip RUN unzip play-2.1.1.zip RUN mv play-2.1.1 /usr/local ENV PATH=$PATH:/usr/local/play-2.1.1 # mysql install RUN apt-get -y install mysql-server RUN /usr/bin/mysqld_safe & \ sleep 10s && \ mysqladmin -u root password password RUN echo "CREATE DATABASE play_db character set utf8" > /tmp/createDataBase.sql RUN /usr/bin/mysqld_safe & \ sleep 10s && \ mysql -u root -p --password='password' < /tmp/createDataBase.sql # 外部からmysqlサーバにアクセスできるように RUN sed -i -e"s/^bind-address\s*=\s*127.0.0.1/bind-address = 0.0.0.0/" /etc/mysql/my.cnf # PartList install RUN cd /usr/local RUN git clone git://git.sourceforge.jp/gitroot/open-pdm-light/PartList.git RUN mv /PartList /usr/local RUN echo "#!/bin/bash" > ./run.sh RUN echo "/etc/init.d/mysql start" >> ./run.sh Run echo "cd /usr/local/PartList/PartsList/PartsList" >> ./run.sh Run echo "play start" >> ./run.sh RUN chmod 777 ./run.sh ADD AuthAction.scala /usr/local/PartList/PartsList/PartsList/app/mvc/AuthAction.scala ADD playdb.sql /usr/local/PartList/PartsList/PartsList/conf/evolutions/default/playdb.sql RUN /usr/bin/mysqld_safe & \ sleep 20s && \ mysql -u root -p play_db --password='password' < /usr/local/PartList/PartsList/PartsList/conf/evolutions/default/playdb.sql CMD ["./run.sh"]
躓いたのは、
mysqlのインストール後の各種設定(パスワード設定やテーブルの作成)。
mysqlのスタートとcreateコマンドを別のRUNにまたぐとうまく行かない。
詳しくはこちら(いつもお世話になっております)
上のDockerfileを使って、イメージを作成。
# sudo docker build -t yuichiro/partslist:devel .
コマンドの末尾の.(コロン)が重要。「カレントのDockerfileを使用」との意味。
以下のコマンドにて起動。
# sudo docker run -d -p 5000:9000 yuichiro/partslist:devel
sbtやplayのコンパイルが終わるまで(私の環境では20分ほど)待って、
localhostの5000ポートにアクセス。起動完了!
以上のdocker imageはこちら。docker pull後、上記の起動コマンドで動くはず。