Groongaを使ったRubyアプリを簡単に配布するためのDocker Rroongaを作った

Rroonga(GroongaをRubyから簡単に使えるライブラリ)を使ったWebアプリケーションを簡単にDockerコンテナとして配布できるようにするために、DockerHubにgroonga/rroongaをおきました。Honyomi 1.5ですでに使われています。

使い方

DockerファイルのFROMにgoonga/rroongaを指定するだけです。

FROM groonga/rroonga:latest

# Add your setting

docker-honyomiのDockerfileを読むとなんとなく何をやれば良いか分かるのではないかと思います。

Dockerコンテナを使ってRroongaチュートリアルを実行する

Dockerコンテナの使い道はこれだけではありません。File: tutorial — rroonga - ラングバを自身の環境を汚さず安全に試すことができます。

$ docker run --name rroonga -it groonga/rroonga
irb(main):001:0> require 'groonga'
=> true
irb(main):002:0> Groonga::VERSION
=> [5, 0, 9, nil]
irb(main):003:0> Groonga::Context.default_options = {:encoding => :utf8}
=> {:encoding=>:utf8}
.
.

groonga/rroongaコンテナを引数なしで起動すると自動的にirbが立ち上がります。(FROMに指定している公式Rubyコンテナの機能です)

コンテナにはRroongaがインストール済みなのですぐにチュートリアルを試すことができます。チュートリアルを一通り実行するとRroongaの使い勝手がなんとなく分かるのではないかと思います。

Dockerコンテナを開発環境として使う

チュートリアルの後にスクリプトを書きたくなったら共有フォルダを指定して/bin/bashで起動します。

$ docker run -it -v /path/to/src:/home groonga/rroonga /bin/bash

私はホームディレクトリを共有フォルダに指定して起動しています。([yourname]を自分のフォルダ名に置き換え)

$ docker run -it -v /Users/[yourname]:/home groonga/rroonga /bin/bash

するとコンテナからホームディレクトリにアクセスできるようになります。

% cd /home
% ls
Applications
Downloads
Public

% cd Documents
% ls
auto-shell-command
f-ruby-07-demo
jekyll-test2
react-0.13.2
.
.

ホストマシンでスクリプトを書いて実行はシェル上から行うことができます。

grn_miniを使った簡単なテストコードを実行してみます。

require 'grn_mini'

GrnMini::tmpdb do
  array = GrnMini::Array.new
  array << {text: "aaa", number: 1}
  array << {text: "bbb", number: 2}
  array << {text: "ccc", number: 3}
  array << {text: "aaa", number: 4}

  p array.count
  p array.select("text:aaa").count
  p array.select("text:aaa number:>1").count
end

先にgrn_mini gemをインストールしてからスクリプトを実行してます。いちいちsudoが要らないのもいいですね。

% gem install grn_mini
% cd grn_mini_test
% ruby hello.rb
4
2
1

(宣伝) Groonga Meetup 2015 で発表します

11/29に開催されるGroonga Meatup 2015で「GroongaアプリケーションをDockerコンテナ化して配布する」というタイトルで発表する予定です。

この記事の内容やKitematicの実演なども行う予定なので興味のある方は是非ご参加ください。