概要
これから始める「DockerでかんたんLAMP環境 for CentOS」 - さくらのナレッジ
基本的にDockerはUbuntuベースで作られているらしく、Dockerの開発者もUbuntuでコンテナを作っているそうです。
なので、CentOSのコンテナをごにょごにょしているのがあんまりない気がしたけど、 そんなことは関係なくCentOSでPlay Frameworkの環境が構築されているDockerfileを書いてみました。
Githubにあげました
参考にしました
Dockerfileの書き方や、monitの使い方などは、↓のページを参考にしています。
これから始める「DockerでかんたんLAMP環境 for CentOS」 - さくらのナレッジ
イメージは、monitというサーバープロセスの監視ツールを使って、Apache、fluentd、sshdを実行するものです。 これで、Docker経由でmonitさえ起動させてしまえば、普通のサーバーと同じようにssh経由でログインの出来るウェブサーバが完成します。
sshログインしたいなあとか思ったので、monitでsshdが動くようにして、ssh経由でログインできるサーバーを作りました。
でも、yumではScalaもPlay Frameworkもインストール出来ないので、
- wgetでソースコードを落とす
- 解答する(まずunzipとかtarとか入っていないので事前にyumで入れる)
- 解答したやつの所有者を変更する
- ユーザーを作り、ホームディレクトリに突っ込み、パスを通す
という作業をScalaやPlay Frameworkでやっています。
DockerfileではRUNとかADDとかはroot権限で、かつルートディレクトリで実行されるので、 適当に所有者やパーミッションを変更してやる必要はあります。
Dockerfile一部抜粋
書き直すところ
IPとパスワードですね。IPは何を書けばいいんだろうって四苦八苦した覚えがある。
FROM centos MAINTAINER shigemk2 ENV IP 自分のPCのグローバルIP ENV PW sshログイン時に必要なパスワードなど。これは適当でいい。 RUN useradd play && echo "play:$PW" | chpasswd
まずsudoも入っていないからsudoを入れて…
RUN yum --enablerepo=remi,epel install sudo openssh-server syslog monit java-1.7.0-openjdk java-1.7.0-openjdk-devel git -y # play ENV PLAY_VERSION 2.2.1 RUN wget http://downloads.typesafe.com/play/$PLAY_VERSION/play-$PLAY_VERSION.zip RUN unzip play-$PLAY_VERSION.zip -d /usr/local RUN chown -R play.play /usr/local/play-$PLAY_VERSION RUN cd /usr/local/bin/ && ln -s /usr/local/play-$PLAY_VERSION/play # play port EXPOSE 9000 # play debug port EXPOSE 9999 # scala ENV SCALA_VERSION 2.11.0 RUN wget http://downloads.typesafe.com/scala/$SCALA_VERSION/scala-$SCALA_VERSION.tgz RUN tar xzvf scala-$SCALA_VERSION.tgz RUN mv scala-$SCALA_VERSION /home/play/ RUN chown -R play.play /home/play/scala-$SCALA_VERSION RUN echo "PATH=$PATH:/home/play/bin:/home/play/scala-$SCALA_VERSION/bin" >> /home/play/.bashrc RUN source /home/play/.bashrc RUN chown play.play /home/play/.bashrc
実行
$ sudo docker build -t centos-play -rm=true . $ sudo docker run -d -t -p 12812:2812 -p 9000:9000-p 10022:22 centos-play /usr/bin/monit -I
これでコンテナが出来上がるので、あとはplay newで適当にアプリを作成してplay runしたら動きます。
Githubにあげました
あ、イメージをコミットしてない。