Docker環境でgruffのサンプルコードを動かす
2021/04/23
gruffというグラフ描画用GemのサンプルコードをDockerで動かしてみるメモ
手順
必要なファイルの準備
Dockerfile、Gemfile、Gemfile.lockを準備する
Gemfile.lockの中身は空で良い
Dockerfile
FROM ruby:2.7.3
RUN apt-get update -qq && apt-get install -y ghostscript
WORKDIR /app
COPY Gemfile Gemfile.lock /app
RUN bundle install -j 4
Gemfile
# frozen_string_literal: true
source 'https://rubygems.org'
git_source(:github) {|repo_name| 'https://github.com/#{repo_name}' }
gem 'gruff'
touch Gemfile.lock
$ ls
Dockerfile Gemfile Gemfile.lock
3つのファイルができたらOK
ビルド
$ docker build -t gruff_sample .
$ docker run --rm gruff_sample ruby -v
ruby 2.7.3p183 (2021-04-05 revision 6847ee089d) [x86_64-linux]
サンプルコード
gruffリポジトリのREADME.mdに載っているコード
app.rb
require 'gruff'
g = Gruff::Line.new
g.title = 'Wow! Look at this!'
g.labels = { 0 => '5/6', 1 => '5/15', 2 => '5/24', 3 => '5/30', 4 => '6/4',
5 => '6/12', 6 => '6/21', 7 => '6/28' }
g.data :Jimmy, [25, 36, 86, 39, 25, 31, 79, 88]
g.data :Charles, [80, 54, 67, 54, 68, 70, 90, 95]
g.data :Julie, [22, 29, 35, 38, 36, 40, 46, 57]
g.data :Jane, [95, 95, 95, 90, 85, 80, 88, 100]
g.data :Philip, [90, 34, 23, 12, 78, 89, 98, 88]
g.data :Arthur, [5, 10, 13, 11, 6, 16, 22, 32]
g.write('exciting.png')
実行
$ docker run --rm -v "$PWD:/app" gruff_sample ruby app.rb
$ ls
Dockerfile Gemfile Gemfile.lock app.rb exciting.png
exciting.pngという画像ファイルができている