高木のブログ

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という画像ファイルができている

生成された画像

exciting.png

リポジトリ

ytkg/gruff_sample - GitHub


ytkg

Written by ytkg, Twitter, GitHub