LoginSignup
17
17

More than 5 years have passed since last update.

テスト支援ツール「chibineko」をDockerで動かしたい

Last updated at Posted at 2016-08-28

わからないなりにDockerイメージとして固めてみたものを公開しています。
https://hub.docker.com/r/kuluna/chibineko/
DockerfileもBitBucketで公開しています。
https://bitbucket.org/kuluna/docker-chibineko

chibinekoとは?

ノンプログラマーが3ヶ月でWebサービスを作ってみたで公開されているテスト支援ツールです。chibinekoいいですよね!

はじめに

このchibinekoをもっと簡単にオンプレ導入できたらなと思い今回Dockerで実行できるようにしてみました。ちなみに私のスキルですが、

  • C# / Java大好き
  • Dockerは最近覚えたてで、 docker pull なら得意(ドヤァ)
  • Ruby?Rails? あぁ、Redmineのプラグイン入れるときに非常に苦労するアレね・・・

といったスキルセットです。RubyやRailsを書いたことはないけど、bundleとかrakeとかいうコマンドを叩くといいんだという程度です。

Dockerfile

まずは私の書いたDockerfileです。

FROM ruby:2.3.0
MAINTAINER kuluna

# Download chibineko
RUN git clone https://github.com/tabbyz/chibineko.git /opt/chibineko

# Setup
WORKDIR /opt/chibineko
RUN mv config/mailer.yml.example config/mailer.yml
RUN bundle install
RUN rake db:migrate
RUN rake db:seed

# Port
EXPOSE 3000
# Volume
VOLUME /opt/chibineko/db

# Start server
CMD rm -f /chibineko/tmp/pids/server.pid;rails server -b 0.0.0.0

FROM

FROMはベースとなるDockerのイメージです。chibinekoのソースを見たところrubyで書かれていたので、ここでは初めからrubyの環境が揃っているイメージを利用しています。
rubyのバージョンを2.3.0と指定していますが、これはchibinekoソース内のGemfileを見たところruby '2.3.0'と書かれていたのでそのバージョンに合わせました。

MAINTAINER

Dockerfileを管理している人の名前を入力するのがDockerfileを書く上でのマナーのようです。(実行には影響ありません)

RUN

RUNは続く文字列をコマンドとして実行してくれます。ここではgit cloneでchibinekoのソースをダウンロードしています。

WORKDIR

ダウンロードしたソースのルートディレクトリに移動しています。
RUN cd /opt/chibinekoだとその時はcdしてくれるのですが、次のRUNでまた元に戻ってしまうようです。cdではなくWORKDIRを使うところはハマりやすそうな気がします。

怒涛のRUNコマンド

このあたりはchibinekoのREADME.mdにあったコマンドを順次実行している感じです。
rake db:migrate RAILS_ENV=productionとやるとエラーが出てしまいました。よくわからんのでつけずに実行しています。

EXPOSE

開放する(?)ポート番号を指定しています。これを指定するとPCとDocker内のイメージで指定したポート番号と通信することができるようになるようです。Railsサーバーを起動したときに3000番でWebサーバーが立ち上がりましたので3000番を書いています。

VOLUME

いまいちよくわかっていないDocker volumeです。イメージとしては指定したディレクトリをPCがマウントできるようにする感じでしょうか。
Dockerイメージが壊れたりバージョンアップをしたときにイメージ内にデータを残すやり方にしているとその時に一緒にデータも葬り去ってしまうので、このように書くとデータを退避できるという使い方をするようです。

chibinekoソース内のconfig/database.ymlにsqliteの保存先が書かれてたのでそのディレクトリをVOLUMEとして指定しています。この使い方であってるんでしょうか・・・?

CMD

Dockerイメージが起動できたときに自動的に実行してくれるようです。rails server -b 0.0.0.0でサーバーを起動させています。
その前にserver.pidを削除していますが、これはdocker stop -> docker startとしたときにこのファイルがあるためrails serverができなかったということがありました。なので先にファイルを消す処理をしています。

実行

このDockerfileをローカルでビルドし、実行することでchibinekoが起動します。

docker build -t kuluna/chibineko:latest {Dockerfileのあるディレクトリ}
docker run -d -p 3000:3000 kuluna/chibineko

一応stopしたりもう一度startしてもデータが永続化していたところまでは確認しました。

さいごに

わかんないことなりに調べて3時間ぐらいでDockerfileができあがりました。
もちろんchibineko自身が少ないコマンド数で実行できるようになっているのが素晴らしいのですが!
Dockerfileの書き方が間違ってたり、こうしたほうがいいというのありましたら連絡いただけると助かります。

17
17
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
17